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 expressimport express from "express";// import controllersimport { getProducts, getProductById, saveProduct, updateProduct, deleteProduct } from "../controllers/productController.js"; // express routerconst router = express.Router(); // Route get All Productsrouter.get('/', getProducts);// Route get single Productrouter.get('/:id', getProductById);// Route CREATE Productrouter.post('/', saveProduct);// Route UPDATE Productrouter.patch('/:id', updateProduct);// Route DELETE Productrouter.delete('/:id', deleteProduct); // export routerexport default router;
// 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
// 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
// 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.
Comments
Post a Comment