Berikan support Anda dengan cara mentrakteer saya kopi!

Trakteer Sekarang.!

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

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

Pada tutorial ini Anda akan belajar bagaimana membuat RESTful API menggunakan node.js, express, dan mongoDB.

Tutorial ini dibuat sesederhana mungkin dan mudah dipahami, bahkan jika Anda pemula di express dan mongoDB.

Mari kita mulai.

Step #1. Design EndPoint

Ini penting!

Sebelum membuat RESTful API, ada baiknya di kita definisikan dulu EndPoint dari RESTful API yang akan dibuat.

EndPoint merupakan routes dari API yang akan kita buat.

RESTful API menggunakan HTTP verbs.

HTTP verbs yang umum digunakan adalah GET, POST, PUT, PATCH, dan DELETE.

GET untuk mendapatkan data dari server atau lebih dikenal dengan istilah READ, POST untuk meng-CREATE data baru, PUT atau PATCH untuk UPDATE data, dan DELETE untuk menghapus data.

Atau lebih dikenal dengan istilah CRUD (Create-Read-Update-Delete).

Pada tutorial kali ini, saya akan sharing bagaimana membuat RESTful API sederhana untuk mengambil data dari server (GET), membuat data baru ke server (POST), mengupdate data ke server (PATCH), dan menghapus data ke server (DELETE) dari suatu collection di database yaitu Products.

Berikut rancangan EndPoint dari RESTful API yang akan kita buat:

endpoint

Dapatkan diskon 75% paket hosting dan gratis domain + extra diskon 5% dengan menggunakan kupon: MFIKRI

Order Sekarang.!

 

Step #2. Install Express, Mongoose, Nodemon, dan Cors

Buat sebuah folder di komputer Anda, disini saya beri nama “restful”.

Jika Anda membuat folder dengan nama yang sama, itu lebih baik.

Anda bebas membuatnya di manapun, baik di C, D, ataupun di Desktop.

Kemudian buka folder “restful” tersebut menggunakan kode editor, disini saya menggunakan Visual Studio Code.

Saya juga menyarankan Anda untuk menggunakan Visual Studio Code.

Anda dapat mendownload Visual Studio Code pada link berikut dan menginstallnya di komputer Anda:

https://code.visualstudio.com/

Selanjutnya, buka terminal pada Visual Studio Code pada menu bar terminal => new terminal.

Setelah itu, ketikan perintah berikut pada terminal untuk membuat file “package.json”:

npm init –y

Selanjutnya, install express, mongoose, dan cors dengan mengetikan perintah berikut pada terminal:

npm install express mongoose cors

Selanjutnya, install nodemon sebagai development dependensi dengan mengetikan perintah berikut pada terminal:

npm install –save-dev nodemon

Selanjutnya, tambahkan kode berikut pada file “package.json”:

"type": "module",

Sehingga file “package.json” terlihat menjadi seperti berikut:

{
  "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.17.1",
    "mongoose": "^5.12.14"
  },
  "devDependencies": {
    "nodemon": "^2.0.7"
  }
}

Hal ini bertujuan agar kita dapat menggunakan ES6 Module Syntax untuk export dan import module.

 

Step #3. Index.js dan Koneksi ke Database

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'));

Pada kode diatas, saya connect ke database “restful_db”.

Anda tidak perlu membuat database “restful_db”, mongoDB akan membuatnya secara otomatis untuk Anda.

Jika Anda belum menginstall mongoDB di komputer Anda, silahkan pergi ke situs resminya: https://mongodb.com, kemudian download mongoDB versi Community Server atau kunjungi link berikut:

https://www.mongodb.com/try/download/community

 

Step #4. Routes

Buat sebuah folder bernama “routes”, kemudian buat file bernama “index.js” di dalam folder tersebut.

Seperti gambar berikut:

routes

Kemudian ketikan kode berikut pada file “index.js” yang terdapat pada folder “restful/routes” tersebut:

// 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 #5. Models

Buat sebuah folder bernama “models”, kemudian buat file bernama “Product.js” di dalam folder tersebut.

Seperti gambar berikut:

Models

Kemudian ketikan kode berikut pada file “Product.js” yang terdapat pada folder “restful/models” tersebut:

// 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 #6. Controllers

Buat sebuah folder bernama “controllers”, kemudian buat file bernama “productController.js” di dalam folder tersebut.

Seperti gambar berikut:

controllers

Kemudian ketikan kode berikut pada file “productController.js” yang terdapat pada folder “restful/controllers” tersebut:

// 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 #7. Testing

Jalankan aplikasi dengan mengetikan perintah berikut pada terminal:

nodemon index

Kemudian, untuk melakukan pengujian, Anda dapat menggunakan POSTMAN.

Anda dapat mendownload POSTMAN pada link berikut kemudian install di komputer Anda:

https://www.postman.com/downloads/

Setelah POSTMAN terinstall di komputer Anda, kemudian jalankan POSTMAN.

 

#7.1. POST Product Baru (CREATE)

Buka POSTMAN, kemudian pilih method “POST” => masukan EndPoint pada kolom URL => pilih Body => pilih raw => pilih application/json => masukan data dalam format json => klik tombol Send.

Seperti gambar berikut:

post

Jika berhasil, maka akan terdapat data sebagai respon seperti gambar diatas.

Setelah itu, insert beberapa data lagi untuk mempermudah pengujian.

 

#7.2. GET Data Product (READ)

Ubah method menjadi “GET” dengan EndPoint yang sama, kemudian klik tombol “Send”.

Seperti gambar berikut:

get-products

Untuk menampilkan product berdasarkan _id, tambahkan id pada kolom URL seperti gambar berikut:

get-single-product

Pada gambar diatas, saya menampilkan product dengan _id=60d16609546fa82a4c5d63e5.

 

#7.3. PATCH Data Product (UPDATE)

Pilih method “PATCH” => masukan EndPoint beserta _id product yang akan di update pada kolom URL => pilih Body => pilih raw => pilih application/json => masukan data dalam format json => klik tombol Send.

Seperti gambar berikut:

patch

Jika update berhasil, maka akan terdapat “nModified”: 1 seperti gambar diatas.

 

#7.4. DELETE Product (DELETE)

Pilih method “DELETE”, kemudian masukan URL beserta _id yang akan di hapus, kemudian klik tombol “Send”.

Seperti gambar berikut:

delete

Jika delete berhasil, maka akan terdapat “deletedCount”: 1 seperti gambar diatas.

Pada gambar diatas, saya menghapus product dengan _id=60d16609546fa82a4c5d63e5.

Related: Tutorial Membuat RESTful API dengan Node.js, Express, dan Sequelize

Kesimpulan:

Pembahasan kali ini adalah bagaimana membuat RESTful API menggunakan node.js, express, dan mongoDB.

Tidak hanya itu, Anda juga telah belajar bagaimana membuat struktur aplikasi menjadi beberapa bagian yaitu: models, controllers, dan routes.

Jadi tunggu apalagi, Let’s Coding!

Dapatkan diskon 75% paket hosting dan gratis domain + extra diskon 5% dengan menggunakan kupon: MFIKRI

Order Sekarang.!
Download Source Code

Komentar (0)

Leave a Comment