tutorial, express.js,

Memahami Request dan Response di Express.js

Kiki/🎮🍉⌨️🍩💻 Kiki/🎮🍉⌨️🍩💻 Aug 22, 2026 · 8 mins read
Memahami Request dan Response di Express.js
Share this

Setiap interaksi di Express.js berputar di sekitar dua objek: req (request) dan res (response). Objek req berisi semua informasi dari klien — body, parameter, header, cookie — sementara res adalah kendaraan untuk mengirim data kembali ke klien.

Memahami kedua objek ini secara mendalam adalah kunci untuk membangun API yang baik.


Objek Request (req)

req.params — Route Parameters

app.get('/pengguna/:id/postingan/:postId', (req, res) => {
  console.log(req.params);
  // { id: '5', postId: '12' }
});

req.query — Query String

// URL: /produk?kategori=elektronik&halaman=2&urutan=harga
app.get('/produk', (req, res) => {
  console.log(req.query);
  // { kategori: 'elektronik', halaman: '2', urutan: 'harga' }

  const halaman = parseInt(req.query.halaman) || 1;
  const limit = parseInt(req.query.limit) || 10;
  const offset = (halaman - 1) * limit;

  res.json({ halaman, limit, offset });
});

req.body — Request Body

Butuh middleware express.json() atau express.urlencoded() terlebih dahulu:

app.use(express.json());

app.post('/pengguna', (req, res) => {
  const { nama, email, password } = req.body;
  res.status(201).json({ pesan: 'Pengguna dibuat', nama });
});

req.headers — HTTP Headers

app.get('/info', (req, res) => {
  const contentType = req.headers['content-type'];
  const userAgent = req.headers['user-agent'];
  const auth = req.headers['authorization'];

  res.json({ contentType, userAgent, auth });
});

req.cookies — Cookies

Butuh middleware cookie-parser:

const cookieParser = require('cookie-parser');
app.use(cookieParser());

app.get('/dashboard', (req, res) => {
  const sesiId = req.cookies.sessionId;
  res.send(`Sesi ID: ${sesiId}`);
});

Properti Berguna Lainnya

req.method        // 'GET', 'POST', 'PUT', dll.
req.url           // URL lengkap dengan query string
req.originalUrl   // URL asli sebelum dimodifikasi middleware
req.path          // Hanya path tanpa query string
req.hostname      // Nama host dari header Host
req.ip            // IP address klien
req.protocol      // 'http' atau 'https'
req.secure        // true jika HTTPS
req.xhr           // true jika XMLHttpRequest (AJAX)

Objek Response (res)

res.send() — Kirim Response Umum

res.send('Teks biasa');
res.send('<h1>HTML</h1>');
res.send({ key: 'value' });  // otomatis jadi JSON
res.send(Buffer.from('data biner'));

res.json() — Kirim JSON

res.json({ berhasil: true, data: [] });
res.status(201).json({ pesan: 'Dibuat', id: 5 });
res.status(400).json({ error: 'Permintaan tidak valid' });

res.status() — Set HTTP Status Code

res.status(200).json({ ok: true });
res.status(201).json({ pesan: 'Dibuat' });
res.status(400).json({ error: 'Bad Request' });
res.status(401).json({ error: 'Unauthorized' });
res.status(403).json({ error: 'Forbidden' });
res.status(404).json({ error: 'Tidak Ditemukan' });
res.status(500).json({ error: 'Server Error' });

res.redirect() — Redirect

res.redirect('/login');
res.redirect(301, 'https://url-baru.com');  // permanent redirect
res.redirect('back');  // kembali ke halaman sebelumnya

res.sendFile() — Kirim File

const path = require('path');

app.get('/download', (req, res) => {
  res.sendFile(path.join(__dirname, 'files', 'dokumen.pdf'));
});

res.download() — Download File

app.get('/download/laporan', (req, res) => {
  res.download('./laporan.pdf', 'laporan-bulanan.pdf');
  // Parameter kedua adalah nama file yang tampil di browser
});

res.set() — Set Header

res.set('Content-Type', 'application/json');
res.set('X-Custom-Header', 'nilai-kustom');
res.set({
  'Cache-Control': 'no-cache',
  'X-Powered-By': 'Express'
});
res.cookie('sessionId', 'abc123', {
  httpOnly: true,
  secure: true,
  maxAge: 24 * 60 * 60 * 1000  // 1 hari dalam ms
});
res.json({ login: true });

Contoh: Handler API yang Lengkap

app.use(express.json());

app.post('/artikel', async (req, res) => {
  try {
    // Baca dari body
    const { judul, konten, kategori } = req.body;

    // Validasi
    if (!judul || !konten) {
      return res.status(422).json({
        error: 'Judul dan konten wajib diisi'
      });
    }

    // Proses (simulasi save ke database)
    const artikel = { id: Date.now(), judul, konten, kategori };

    // Kirim response sukses
    res.status(201)
      .set('X-Resource-Id', artikel.id)
      .json({
        berhasil: true,
        pesan: 'Artikel berhasil dibuat',
        data: artikel
      });

  } catch (err) {
    res.status(500).json({ error: 'Terjadi kesalahan server' });
  }
});

Kesimpulan

req dan res adalah dua objek yang akan selalu kamu gunakan di setiap handler Express. Semakin familiar kamu dengan properti dan method keduanya, semakin efisien kamu membangun API. Di artikel berikutnya, kita akan masuk ke topik yang sangat penting: membangun RESTful API dengan Express.js.

Kiki/🎮🍉⌨️🍩💻
Written by Kiki/🎮🍉⌨️🍩💻
hello I'm friend K.