Bab 5 dari 7 · 30 menit

Membangun Aplikasi Web dan REST API

Node.js menyediakan modul inti http dan fs untuk membuat aplikasi web tingkat dasar. Modul fs menyediakan varian operasi berbasis Promise lewat fs/promises yang modern. Namun, membangun server produksi murni menggunakan modul http bawaan membutuhkan penulisan parsing rute URL, parameter kueri, dan header secara manual.

Express.js

Untuk menyederhanakan alur tersebut, framework Express.js menjadi standar industri yang paling banyak dipakai. Express adalah kerangka kerja web minimalis yang menyajikan abstraksi routing, middleware berlapis, integrasi parsing body, dan penyajian berkas statis.

Prinsip utama Express terletak pada middleware, yaitu fungsi perantara yang menerima objek permintaan req, respons res, dan fungsi next. Permintaan HTTP mengalir melewati rantai middleware ini secara berurutan mulai dari logger, otorisasi, validasi data, hingga akhirnya sampai ke fungsi controller akhir.

Routing dan Middleware

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

app.use(express.json());

// Middleware pencatat aktivitas
app.use((req, res, next) => {
  console.log(`${req.method} ${req.url}`);
  next();
});

// Endpoint REST API sederhana
app.get('/api/produk/:id', (req, res) => {
  const id = req.params.id;
  res.json({ id, nama: 'Kopi Susu' });
});

Membangun REST API CRUD

Dalam membangun arsitektur REST API CRUD, operasi data dipetakan ke metode HTTP standar:

  • GET: Membaca sumber daya data (status sukses 200 OK).
  • POST: Membuat sumber daya data baru (status sukses 201 Created).
  • PUT: Mengubah seluruh entitas data (status sukses 200 OK).
  • PATCH: Memperbarui sebagian atribut data (status sukses 200 OK).
  • DELETE: Menghapus data (status sukses 204 No Content).

Penanganan galat terpusat di Express dilakukan dengan mendaftarkan middleware khusus di bagian paling akhir deklarasi rute. Middleware galat dikenali dengan keberadaan empat parameter: (err, req, res, next). Ketika terjadi kegagalan operasional di controller, panggil next(err) untuk meneruskan objek error langsung ke penangan terpusat.

Latihan kode: Route daftar dan detail produk

Buat dua route pada app:

  • GET /produk mengirim seluruh array produk sebagai JSON.
  • GET /produk/:id mengirim satu produk yang id-nya cocok. Kalau tidak ada, kirim status 404 dengan { pesan: 'Produk tidak ditemukan' }.

Ingat, req.params.id selalu berupa string.

Cek pemahaman

  1. 1. Status kode HTTP standar yang tepat dikembalikan oleh REST API ketika sumber daya data baru berhasil dibuat adalah...

  2. 2. Bagaimana cara membaca parameter dinamis id dari alamat URL /api/produk/:id pada controller Express?

    app.get('/api/produk/:id', (req, res) => {
      const id = ____;
    });
  3. 3. Middleware penanganan galat terpusat di Express wajib didaftarkan sebelum semua rute aplikasi dideklarasikan.