Representational State Transfer (REST) adalah arsitektur perangkat lunak yang memberlakukan syarat mengenai cara API bekerja. REST pada awalnya dibuat sebagai panduan untuk mengelola komunikasi pada jaringan kompleks seperti internet. Anda dapat menggunakan arsitektur berbasis REST untuk mendukung komunkasi berperforma tinggi dan andal sesuai skala. Anda dapat dengan mudah menerapkan dan memodifikasinya, membawa visibilitas dan portabilitas lintas platform ke semua sistem API
Developer API dapat merancang API menggunakan beberapa arsitektur yang berbeda. API yang mengikuti gaya arsitektur REST disebut sebagai API REST. Layanan web yang menerapkan arsitektur REST disebut sebagai layanan web RESTful.
API RESTful adalah antarmuka yang digunakan oleh dua sistem komputer untuk bertukar informasi secara aman melalui internet.
1. Buat sebuah folder dalam komputer anda dengan nama "restful". Kemudian buka folder tersebut menggunakan aplikasi Visual Studio Code.
//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
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'
));
// 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
;
// 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);
// 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});
}
}
ConversionConversion EmoticonEmoticon