Dalam Express.js, komunikasi antara client dan server selalu melibatkan dua objek utama:
- request (
req) → membawa data dari client ke server - response (
res) → membawa hasil dari server ke client
Memahami isi req dan cara menggunakan res adalah kunci membangun REST API yang benar dan rapi.
Contents
- 1 Struktur Dasar Request dan Response
- 2 Request Params: Mengambil Data dari URL
- 3 Validasi Request Params
- 4 Request Query: Mengambil Data dari URL Query
- 5 Query untuk Pagination
- 6 Request Body: Mengambil Data dari Client
- 7 Validasi Request Body Dasar
- 8 Menggabungkan Params, Query, dan Body
- 9 Mengirim Response yang Konsisten
- 10 Kesalahan Umum dalam Mengelola Request
- 11 Kesimpulan
- 12 Related Posts
Struktur Dasar Request dan Response
Contoh route sederhana:
app.get("/hello", (req, res) => {
res.send("Hello Express");
});
reqberisi semua data yang dikirim clientresdigunakan untuk menentukan apa yang dikembalikan ke client
Hampir semua logika API berada di antara dua objek ini.
Request Params: Mengambil Data dari URL
Request params digunakan saat data menjadi bagian dari URL.
Contoh URL:
/users/10
Contoh kode:
app.get("/users/:id", (req, res) => {
const id = req.params.id;
res.json({
message: `User dengan ID ${id}`
});
});
Params sangat cocok untuk:
- detail data
- update data
- delete data
Validasi Request Params
Params sebaiknya divalidasi agar tidak terjadi error.
app.get("/users/:id", (req, res) => {
const id = Number(req.params.id);
if (isNaN(id)) {
return res.status(400).json({
message: "ID harus berupa angka"
});
}
res.json({
id
});
});
Validasi sederhana ini sangat membantu menjaga API tetap aman.
Request Query: Mengambil Data dari URL Query
Query digunakan untuk filter, pencarian, atau pagination.
Contoh URL:
/products?category=laptop&sort=asc
Contoh kode:
app.get("/products", (req, res) => {
const { category, sort } = req.query;
res.json({
category,
sort
});
});
Query tidak wajib, sehingga harus selalu ditangani dengan aman.
Query untuk Pagination
Pagination sering digunakan pada API.
app.get("/articles", (req, res) => {
const page = Number(req.query.page) || 1;
const limit = Number(req.query.limit) || 10;
res.json({
page,
limit
});
});
Pendekatan ini sangat umum di aplikasi skala besar.
Request Body: Mengambil Data dari Client
Request body digunakan untuk menerima data yang dikirim melalui POST atau PUT.
Aktifkan middleware:
app.use(express.json());
Contoh menerima body:
app.post("/users", (req, res) => {
const { name, email } = req.body;
res.json({
name,
email
});
});
Body biasanya digunakan untuk:
- form
- login
- input data
Validasi Request Body Dasar
Request body harus divalidasi sebelum diproses.
app.post("/register", (req, res) => {
const { username, password } = req.body;
if (!username || !password) {
return res.status(400).json({
message: "Data tidak lengkap"
});
}
res.json({
message: "Registrasi berhasil"
});
});
Validasi mencegah data tidak valid masuk ke sistem.
Menggabungkan Params, Query, dan Body
Dalam aplikasi nyata, ketiganya sering digunakan bersamaan.
app.put("/users/:id", (req, res) => {
const id = req.params.id;
const { role } = req.query;
const { name } = req.body;
res.json({
id,
role,
name
});
});
Contoh ini menggambarkan API yang lebih realistis.
Mengirim Response yang Konsisten
Response API sebaiknya konsisten dan mudah dipahami.
res.status(200).json({
success: true,
data: {}
});
Konsistensi response sangat membantu frontend developer.
Kesalahan Umum dalam Mengelola Request
Kesalahan yang sering terjadi:
- tidak memvalidasi input
- mencampur params dan query
- mengabaikan status code
Kesalahan kecil ini bisa berdampak besar pada aplikasi.
Kesimpulan
Memahami request dan response adalah fondasi utama Express.js. Dengan menguasai:
- params
- query
- body
kita bisa membangun REST API yang rapi, aman, dan mudah dikembangkan.
Bab ini menjadi dasar penting sebelum masuk ke database dan autentikasi.