
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:
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:
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:
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:
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:
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:
Untuk menampilkan product berdasarkan _id, tambahkan id pada kolom URL seperti gambar berikut:
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:
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:
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!
Komentar (0)