Tutorial Membuat RESTful API dengan Node.js, Express, dan MongoDB

 



API adalah singkatan dari Application Programming Interface. API sendiri merupakan interface yang dapat menghubungkan satu aplikasi dengan aplikasi lainnya. Dengan kata lain, peran API adalah sebagai pernatara antar berbagai aplikasi berbeda, baik dalam satu platform yang sama ataupun lintas platform.


Pada tutorial ini kita akan belajar membuat Restful API dengan Node.js, Express, dan MongoDB. 

Langkah- Langkah sebagai berikut :

Step 1 : Membuat Folder

Buatlah sebuah folder bernama "restful" yang dimana folder tersebut sebagai folder utama penyimpanan package json.

Step 2 : Membuat File Package.json

Buka Folder restful API menggunakan Visual Studio Code. 

Jika anda belum mengintsallnya bisa download terlebih dahulu pada link berikut: 

Pada Bar Terminal - Pilih New Terminal, seperti gambar berikut:


Lalu ketik kode berikut pada terminal:
npm init -y

Step 3 : Install Express, Mongoose, Nodemon, dan Cors

Pada Terminal ketikan kode berikut untuk menginstall Express,Mongoose, Nodemon dan Cors
  • npm install express
  • npm install mongoose
  • npm install -sav-dev nodemon
Jika sudah terinstall semua, maka isi dari file package.json akan seperti ini :

dan jangan lupa untuk menambahkan "type": "module"

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

Step 4 : Membuat File Index pada Folder Restful

Buat file Index.js pada folder restful dan ketikkan 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'));

Step 5 : Routes

Buat sebuah folder bernama "routes" dalam folder restful, kemudian buat file "index.js" di dalam folder tersebut.

Ketikan kode berikut didalam file index.js:

// 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;

Step 6 : Models

Buat sebuah folder bernama "models" dalam folder restful, kemudian buat file "Product.js" di dalam folder tersebut

Kemudian ketikan kode berikut didalam file Product.js :
// 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);

Step 7 : Controllers

Buat sebuah folder bernama "controllers" dalam folder restful, kemudian buat file "productControllerjs" di dalam folder tersebut
Lalu  ketikan kode berikut didalam file productControllerjs :
// 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});
    }
}

Step 8 : Testing

Sebelum menjalnkan test server, terlebih dahulu kita ketik pada terminal yaitu : nodemon index. Jika server berjalan maka respon pada terminal akan seperti berikut.


Step 9 : POST 

Pada pengujian menggunakan software POSTMAN. Kalian bisa mendownload pada link berikut dan menginstall pada komputer.

Buka POSTMAN - masukan URL - Pilih Body - Pilih Raw - Pilih JSON - Klik SEND


Jika berhasil akan menampilkan respon data seperti gambar diatas. Ulangi langkah tadi untuk mendapatkan data yang berbeda atau data yang diinginkan.

Step 10 : GET

Karena tadi saya sudah menginput 3 data. Kemudian kita bisa melihat data apa saja yang telat di Post tadi



Jika ingin melihat salah satu product yang kita inginkan, kita bisa tambahkan id pada link url nya, dan akan respon akan memperlihatkan product yang ingin dicari. Disini saya ingin mencari Product 1 maka saya menambahkan id pad link url




Step 11 : PATCH

Pada patch saya mencoba mengupdate price yang ada pada Product 3 dari 200 menjadi 700.



Untuk mengecek apakah data tersebut sudah berubah atau belum, terlebih dahu ubah metode menjadi GET lalu send.



Step 12 : DELETE

Disini saya akan menghapus salah satu data yaitu pada Product 3. Jika berhasil kan terlihat respon seperti berikut.



Untuk pengujain lebih jelas bisa dilihat pada video berikut:

Comments

Popular posts from this blog

Praktikum 9 - Manajemen User dan Group

Praktikum 1 - Perintah Dasar Sistem Operasi Linux

Praktikum 4 - Proses & Manajemen Proses