BAB 13 – Memahami Request dan Response di Express.js: Params, Query, dan Body

BAB 13 – Memahami Request dan Response di Express.js: Params, Query, dan Body

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.


Struktur Dasar Request dan Response

Contoh route sederhana:

app.get("/hello", (req, res) => {
  res.send("Hello Express");
});
  • req berisi semua data yang dikirim client
  • res digunakan 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.

READ :  Setting PM2 Mode Development Auto-Reload & Restart Node.js

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.