Express: Routing & Request/Response
Membuat web server dan API dengan Express: route, parameter, query, body JSON, dan status code.
Express: framework web paling populer
Express adalah framework minimalis untuk Node: ia menyederhanakan routing, membaca body, mengirim JSON, dan menyusun middleware di atas modul http. Kursus ini memakai gaya Express 5 (versi stabil saat ini); sebagian besar kode juga berlaku di Express 4.
npm install express
const express = require('express');
const app = express();
app.use(express.json()); // otomatis membaca body JSON ke req.body
app.get('/', (req, res) => {
res.send('Halo dari Express!');
});
app.listen(3000, () => console.log('Server di port 3000'));
Route = metode + path + handler
app.get('/produk', (req, res) => { /* daftar */ });
app.get('/produk/:id', (req, res) => { /* satu produk */ });
app.post('/produk', (req, res) => { /* buat */ });
app.put('/produk/:id', (req, res) => { /* ganti */ });
app.patch('/produk/:id', (req, res) => { /* ubah sebagian */ });
app.delete('/produk/:id', (req, res) => { /* hapus */ });
Mengambil data dari permintaan
| Sumber | Properti | Contoh URL |
|---|---|---|
| Parameter path | req.params | /produk/7 → req.params.id === '7' |
| Query string | req.query | /produk?kategori=kopi → req.query.kategori |
| Body | req.body | JSON yang dikirim klien (butuh express.json()) |
| Header | req.get('x-api-key') |
Selalu string: req.params.id adalah '7'. Ubah ke angka dengan Number(req.params.id) sebelum membandingkan dengan ID numerik.
Mengirim respons
res.send('teks atau HTML');
res.json({ pesan: 'ok' }); // JSON + Content-Type otomatis
res.status(201).json(produkBaru); // atur status lalu kirim
res.sendStatus(204); // status saja
res.status(404).json({ error: 'Produk tidak ditemukan' });
res.redirect('/produk');
res.set('X-Contoh', 'nilai'); // header
Contoh: API produk kecil
const produk = [
{ id: 1, nama: 'Kopi', kategori: 'minuman' },
{ id: 2, nama: 'Roti', kategori: 'makanan' },
];
app.get('/produk', (req, res) => {
const { kategori } = req.query;
res.json(kategori ? produk.filter((p) => p.kategori === kategori) : produk);
});
app.get('/produk/:id', (req, res) => {
const p = produk.find((x) => x.id === Number(req.params.id));
if (!p) return res.status(404).json({ error: 'Produk tidak ditemukan' });
res.json(p);
});
app.post('/produk', (req, res) => {
const baru = { id: produk.length + 1, ...req.body };
produk.push(baru);
res.status(201).json(baru);
});
Urutan route penting
Express mencocokkan route dari atas ke bawah dan berhenti pada yang pertama merespons. Letakkan route spesifik (/produk/baru) sebelum yang berparameter (/produk/:id).
Express 5: error async otomatis
Di Express 5, handler async yang melempar error atau Promise yang ditolak otomatis diteruskan ke penanganan error — tidak perlu try/catch di setiap route atau pembungkus tambahan seperti di Express 4.
Di KelasIT
require('express') tersedia di simulator dan meniru perilaku Express untuk route, middleware, express.json(), dan Router. Setelah app.listen, kodemu bisa dipanggil lewat fetch('http://localhost:3000/...').