tutorial, express.js,

Routing di Express.js: Panduan Lengkap dari Dasar hingga Route Parameter

Kiki/🎮🍉⌨️🍩💻 Kiki/🎮🍉⌨️🍩💻 Aug 20, 2026 · 10 mins read
Routing di Express.js: Panduan Lengkap dari Dasar hingga Route Parameter
Share this

Routing adalah salah satu konsep terpenting di Express.js. Ini adalah mekanisme yang menentukan bagaimana aplikasi merespons request dari klien ke endpoint tertentu — kombinasi dari URL path dan HTTP method.

Di artikel ini kita bahas semua yang perlu kamu tahu tentang routing di Express, dari route sederhana hingga route parameter dinamis dan Express Router.


HTTP Methods di Express

Express mendukung semua HTTP method standar:

app.get('/path', handler);      // Ambil data
app.post('/path', handler);     // Kirim/buat data
app.put('/path', handler);      // Update data (replace)
app.patch('/path', handler);    // Update data (partial)
app.delete('/path', handler);   // Hapus data
app.all('/path', handler);      // Semua method

Setiap method sesuai dengan konvensi REST API yang akan kita bahas lebih dalam di artikel mendatang.


Route Path

Path route bisa berupa string literal, pola string, atau regex.

String Literal (Paling Umum)

app.get('/pengguna', (req, res) => {
  res.send('Daftar pengguna');
});

app.get('/pengguna/profil', (req, res) => {
  res.send('Profil pengguna');
});

Pola String

// Cocok dengan /abe, /abcde, dsb. (? berarti karakter opsional)
app.get('/ab?cde', handler);

// Cocok dengan /abcde, /abbcde, /abbbcde, dsb.
app.get('/ab+cde', handler);

// Cocok dengan /abcde, /abXYZcde, dsb.
app.get('/ab*cde', handler);

Regex

// Cocok dengan path yang mengandung "fly"
app.get(/fly/, (req, res) => {
  res.send('Path mengandung "fly"');
});

Route Parameters

Route parameter memungkinkan kamu menangkap nilai dinamis dari URL. Tandai dengan tanda titik dua (:) di depan nama parameter.

// :id adalah parameter dinamis
app.get('/pengguna/:id', (req, res) => {
  const userId = req.params.id;
  res.send(`Profil pengguna dengan ID: ${userId}`);
});

Akses http://localhost:3000/pengguna/42 → response: Profil pengguna dengan ID: 42

Multiple Parameters

app.get('/users/:userId/books/:bookId', (req, res) => {
  const { userId, bookId } = req.params;
  res.json({
    user: userId,
    book: bookId
  });
});

Akses /users/10/books/55{ "user": "10", "book": "55" }

Parameter Opsional

// bookId bersifat opsional
app.get('/users/:userId/books/:bookId?', (req, res) => {
  const { userId, bookId } = req.params;
  if (bookId) {
    res.send(`User ${userId}, Buku ${bookId}`);
  } else {
    res.send(`Semua buku milik User ${userId}`);
  }
});

Query String

Query string adalah parameter yang dikirim setelah tanda ? di URL.

// URL: /produk?kategori=elektronik&halaman=2
app.get('/produk', (req, res) => {
  const { kategori, halaman } = req.query;
  res.json({
    kategori: kategori || 'semua',
    halaman: parseInt(halaman) || 1
  });
});

Route Handlers (Multiple Callbacks)

Sebuah route bisa punya lebih dari satu handler. Ini berguna untuk memisahkan logika, misalnya validasi dan proses utama.

// Middleware validasi
const validasiId = (req, res, next) => {
  const id = parseInt(req.params.id);
  if (isNaN(id) || id <= 0) {
    return res.status(400).json({ error: 'ID tidak valid' });
  }
  req.userId = id; // teruskan ke handler berikutnya
  next();
};

// Handler utama
const ambilPengguna = (req, res) => {
  res.json({ id: req.userId, nama: 'Budi' });
};

// Gabungkan
app.get('/pengguna/:id', validasiId, ambilPengguna);

Express Router — Modularisasi Route

Saat aplikasi semakin besar, semua route dalam satu file index.js akan berantakan. Express Router memungkinkan kamu memisahkan route ke file-file terpisah.

Struktur Project

project/
├── routes/
│   ├── pengguna.js
│   └── produk.js
└── index.js

routes/pengguna.js

const express = require('express');
const router = express.Router();

// GET /pengguna
router.get('/', (req, res) => {
  res.json([
    { id: 1, nama: 'Budi' },
    { id: 2, nama: 'Sari' }
  ]);
});

// GET /pengguna/:id
router.get('/:id', (req, res) => {
  res.json({ id: req.params.id, nama: 'Budi' });
});

// POST /pengguna
router.post('/', (req, res) => {
  res.status(201).json({ pesan: 'Pengguna berhasil dibuat' });
});

// DELETE /pengguna/:id
router.delete('/:id', (req, res) => {
  res.json({ pesan: `Pengguna ${req.params.id} dihapus` });
});

module.exports = router;

routes/produk.js

const express = require('express');
const router = express.Router();

router.get('/', (req, res) => {
  res.json([{ id: 1, nama: 'Laptop', harga: 15000000 }]);
});

router.get('/:id', (req, res) => {
  res.json({ id: req.params.id, nama: 'Laptop', harga: 15000000 });
});

module.exports = router;

index.js — Daftarkan Semua Router

const express = require('express');
const app = express();

const penggunaRouter = require('./routes/pengguna');
const produkRouter = require('./routes/produk');

app.use(express.json());

// Mount router ke prefix path
app.use('/pengguna', penggunaRouter);
app.use('/produk', produkRouter);

// Route utama
app.get('/', (req, res) => {
  res.json({ pesan: 'API Express.js Berjalan' });
});

// 404 handler
app.use((req, res) => {
  res.status(404).json({ error: 'Endpoint tidak ditemukan' });
});

app.listen(3000, () => {
  console.log('Server berjalan di port 3000');
});

Sekarang endpoint yang tersedia:

  • GET /pengguna → daftar pengguna
  • GET /pengguna/5 → pengguna dengan ID 5
  • POST /pengguna → buat pengguna baru
  • DELETE /pengguna/5 → hapus pengguna ID 5
  • GET /produk → daftar produk
  • GET /produk/1 → produk dengan ID 1

Urutan Route Matters

Express memproses route dari atas ke bawah. Route yang lebih spesifik harus didefinisikan sebelum yang umum:

// BENAR - spesifik dulu, umum kemudian
app.get('/pengguna/baru', (req, res) => {
  res.send('Form pengguna baru');
});

app.get('/pengguna/:id', (req, res) => {
  res.send(`Pengguna ID: ${req.params.id}`);
});

Jika dibalik, request ke /pengguna/baru akan ditangkap oleh route /:id dengan id = 'baru'.


Kesimpulan

Routing adalah fondasi dari setiap aplikasi Express. Dengan memahami route parameters, query string, multiple handlers, dan Express Router, kamu sudah bisa membangun struktur routing yang bersih dan scalable.

Di artikel berikutnya, kita akan bahas Middleware — konsep paling powerful di Express yang memungkinkan kamu menambahkan logika di antara request dan response.

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