Membuat RESTFul API dengan NodeJS, ExpressJS dan MongoDB

Membuat RESTFul API dengan NodeJS, ExpressJS dan MongoDB



1. Buka software Visual Studio Code 

2. Buat folder dengan nama sesuai yang kalian inginkan (Disini saya menamakan "restful")

3. Buka folder yang sudah dibuat di Visual Studio Code

4. Buka terminal pada Visual Studio Code. Pada menu bar terminal => new terminal

5. Ketikan perintah di terminal npm init –y untuk membuat file “package.json”

6. Install express, mongoose, dan cors dengan mengetikan perintah npm install express mongoose cors

7. Install nodemon sebagai development dependensi dengan mengetikan perintah npm install –save-dev nodemon

8. Tambahkan kode berikut pada file “package.json” "type": "module",

{
    "name": "restful",
    "version": "1.0.0",
    "type": "module",
    "main": "index.js",
    "scripts": {
        "test": "echo \"Error: no test specified\" && exit 1"
    },
    "keywords": [],
    "author": "",
    "license": "ISC",
    "description": "",
    "devDependencies": {
        "nodemon": "^2.0.16"
    }
}

9. Buat file bernama “index.js” pada folder “restful”, kemudian ketikan kode berikut :
//import express
import express from "express";
//import mongoose
import mongoose from "mongoose";
// import routes
import route from "./routes/index.js";
//import cors
import cors from "cors";
// construct express function
const app = express();

// connect ke database mongoDB
mongoose.connect("mongodb://localhost:27017/restful_db", {
    useNewUrlParser: true,
    useUnifiedTopology: true
});
const db = mongoose.connection;
db.on('error', (error) => console.error(error));
db.once('open', () => console.log('Database Connected'));

// middleware
app.use(cors());
app.use(express.json());
app.use('/product', route);

// listening to port
app.listen('3000', () => console.log('Server Running at port: 3000'));

10. Buat sebuah folder bernama “routes”, kemudian buat file bernama “index.js” di dalam folder "restful" dan masukkan kode :
// import express
import express from "express";
// import controllers
import {
    getProducts,
    getProductById,
    saveProduct,
    updateProduct,
    deleteProduct
} from "../controllers/productController.js";

// express router
const router = express.Router();

// Route get All Products
router.get('/', getProducts);
// Route get single Product
router.get('/:id', getProductById);
// Route CREATE Product
router.post('/', saveProduct);
// Route UPDATE Product
router.patch('/:id', updateProduct);
// Route DELETE Product
router.delete('/:id', deleteProduct);

// export router
export default router;

11. Buat sebuah folder bernama “models”, kemudian buat file bernama “Product.js” di dalam folder "restful" dan masukkan kode :
// import mongoose
import mongoose from "mongoose";

// Buat Schema
const Product = mongoose.Schema({
    title: {
        type: String,
        required: true
    },
    price: {
        type: Number,
        required: true
    }
});

// export model
export default mongoose.model('Products', Product);

12. Buat sebuah folder bernama “controllers”, kemudian buat file bernama “productController.js” di dalam folder "restful" dan masukkan kode :
// import models
import Product from "../models/Product.js";

// function get All Products
export const getProducts = async(req, res) => {
    try {
        const products = await Product.find();
        res.json(products);
    } catch (error) {
        res.status(500).json({ message: error.message });
    }

}

// function get single Product
export const getProductById = async(req, res) => {
    try {
        const product = await Product.findById(req.params.id);
        res.json(product);
    } catch (error) {
        res.status(404).json({ message: error.message });
    }

}

// function Create Product
export const saveProduct = async(req, res) => {
    const product = new Product(req.body);
    try {
        const savedProduct = await product.save();
        res.status(201).json(savedProduct);
    } catch (error) {
        res.status(400).json({ message: error.message });
    }
}

// function Update Product
export const updateProduct = async(req, res) => {
    const cekId = await Product.findById(req.params.id);
    if (!cekId) return res.status(404).json({ message: "Data tidak ditemukan" });
    try {
        const updatedProduct = await Product.updateOne({ _id: req.params.id }, { $set: req.body });
        res.status(200).json(updatedProduct);
    } catch (error) {
        res.status(400).json({ message: error.message });
    }
}

// function Delete Product
export const deleteProduct = async(req, res) => {
    const cekId = await Product.findById(req.params.id);
    if (!cekId) return res.status(404).json({ message: "Data tidak ditemukan" });
    try {
        const deletedProduct = await Product.deleteOne({ _id: req.params.id });
        res.status(200).json(deletedProduct);
    } catch (error) {
        res.status(400).json({ message: error.message });
    }
}

13. Buka debug console dan ketik code npm start

14. Lalu untuk pengujian dapat menggunakan POSTMAN yang dapat diunduh pada link dibawah ini


15. Buka POSTMAN masukkan kode seperti dibawah lalu pilih "POST" dan masukkan link berikut pada kolom URL


16. Pilih body, pilih raw, masukkan kode dibawah dan klik send


17. Setelah itu pada kolom body dibawah akan muncul listnya seperti berikut



18. Ubah method menjadi "GET" dengan EndPoint yang sama dan klik tombol send maka akan muncul pada kolom body seperti dibawah ini



19. Pilih method "PATCH", lalu masukkan EndPoint beserta _id product yang akan di update pada kolom URL seperti dibawah ini


20. Pilih body, lalu raw, lalu masukkan kode dibawah ini dan send

21. Maka akan muncul seperti berikut


22. Jika kita kembali menggunakan command "GET" maka akan muncul seperti dibawah ini


23. Pilih method "DELETE", kemudian masukkan url dan _id yang akan dihapus seperti dibawah ini


24. kemudian klik tombol send dan jika menggunakan method "GET" product dengan _id tersebut sudah hilang


LINK VIDEO :


Komentar

Postingan populer dari blog ini

Praktikum 6 : Pemrograman Shell

Praktikum 8 : Sistem File

Praktikum 7 : Unix System Call dan Manajemen Memory