Proyek Akhir: API Catatan Lengkap
Menggabungkan semuanya: REST API dengan validasi, pencarian, paginasi, proteksi API key, penyimpanan file, dan penanganan error.
Proyek: API Catatan
Kamu akan membangun layanan backend yang utuh dan realistis, memakai hampir semua yang sudah dipelajari: Express, Router, middleware, validasi, error handler, fs/promises, dan konfigurasi.
Spesifikasi
| Endpoint | Perilaku |
|---|---|
GET /health | { status: 'ok' } |
GET /api/catatan?q=&halaman=&batas= | Daftar catatan; q mencari di judul (tak peka huruf besar/kecil); paginasi dengan halaman (mulai 1) dan batas (default 10). Respons { data, total, halaman, batas } |
GET /api/catatan/:id | Satu catatan atau 404 |
POST /api/catatan | Butuh API key. Validasi: judul string ≥ 3 karakter; isi string (boleh kosong). 201 + catatan; 400 + { errors } |
PUT /api/catatan/:id | Butuh API key. Validasi sama. 200 / 404 / 400 |
DELETE /api/catatan/:id | Butuh API key. 204 / 404 |
API key: header x-api-key bernilai rahasia (dibaca dari process.env.API_KEY bila ada). Tanpa key untuk operasi tulis → 401 {"error":"API key tidak valid"}.
Persistensi
Setiap kali data berubah (POST/PUT/DELETE), tulis seluruh daftar ke catatan.json memakai fs/promises. Saat start, muat dari berkas itu bila ada (bagus untuk latihan ENOENT). Di aplikasi nyata ini digantikan database.
Struktur yang disarankan
// 1. config & muat data awal
// 2. fungsi validasi murni
// 3. repository: muat() / simpan() — satu-satunya yang menyentuh fs
// 4. middleware: wajibApiKey
// 5. router /api/catatan (controller ringkas)
// 6. 404 + error handler terpusat
// 7. listen
Tips
- Bangun bertahap: kerangka → GET → POST → validasi → PUT/DELETE → proteksi → persistensi.
- Handler async cukup ditulis
async (req, res) => { ... }; Express 5 menangkap kegagalannya. halamandanbatasdari query berupa string — ubah ke angka dan beri nilai bawaan yang aman.- Gunakan
Array.prototype.slice((halaman - 1) * batas, halaman * batas)untuk paginasi.
Setelah ini
Langkah wajar berikutnya: ganti penyimpanan berkas dengan database (PostgreSQL + Prisma/Drizzle, atau MongoDB), tambahkan autentikasi pengguna (bab 21), tulis tes (bab 22), dan deploy dengan Docker (bab 23). Kamu sudah memiliki seluruh fondasinya.
Selamat! Lulus bab ini dan quiz akhir memberimu sertifikat Node.js dari Nol dari KelasIT.