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.


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.