Proyek Akhir: API Catatan Lengkap

Menggabungkan semuanya: REST API dengan validasi, pencarian, paginasi, proteksi API key, penyimpanan file, dan penanganan error.

Part 24 dari 24 ± 60 menit Gratis

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

EndpointPerilaku
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/:idSatu catatan atau 404
POST /api/catatanButuh API key. Validasi: judul string ≥ 3 karakter; isi string (boleh kosong). 201 + catatan; 400 + { errors }
PUT /api/catatan/:idButuh API key. Validasi sama. 200 / 404 / 400
DELETE /api/catatan/:idButuh 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.
  • halaman dan batas dari 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.

Praktikkan langsung, gratis

Tulis dan jalankan kode langsung di browser, dapatkan penilaian otomatis. Daftar gratis kapan saja untuk menyimpan progres dan meraih sertifikat.

Coba latihan sekarang, tanpa daftar
Bagikan: WhatsApp Facebook LinkedIn X