Pernah nggak kamu buka aplikasi ojek online, tekan tombol "Pesan", lalu dalam hitungan detik lokasimu sudah terbaca, driver terdekat muncul, dan harga langsung tampil? Semua itu terjadi karena ada REST API yang bekerja di balik layar. Nah, di artikel ini kamu akan belajar cara membuat REST API Node.js sendiri — lengkap dengan method GET, POST, PUT, DELETE yang biasa disebut CRUD API Node.js. Kalau kamu sudah melewati seri ini dari artikel pertama, ini adalah momen paling seru: kamu akhirnya membuat sesuatu yang benar-benar dipakai aplikasi nyata. Siap? Mari kita mulai dengan konsep dulu, baru langsung ngoding pakai buat API Express.js.
REST API (Representational State Transfer API)
Adalah antarmuka komunikasi antara client (browser/aplikasi) dan server yang menggunakan protokol HTTP dengan prinsip stateless. Setiap request berisi semua informasi yang dibutuhkan untuk memprosesnya — tanpa server perlu "ingat" siapa yang nanya sebelumnya.
Apa Itu REST API Node.js dan Kenapa Kamu Butuh Ini?
Bayangkan sebuah restoran. Kamu (client) duduk di meja, lihat menu, lalu memanggil pelayan. Pelayan (API) membawa pesananmu ke dapur (server/database), mengambil makanan, dan mengantarkannya kembali. Kamu nggak perlu masuk dapur sendiri. Itulah analogi REST API — dia adalah jembatan terstandarisasi antara aplikasi front-end dan data di back-end.
Di ekosistem Node.js, REST API biasanya dibangun dengan Express.js karena ringan dan fleksibel. Setiap "menu" yang bisa dipesan disebut endpoint, dan cara memesannya menggunakan HTTP Method:
Lebih dari 83% API publik di dunia menggunakan arsitektur REST. Mulai dari Twitter/X, GitHub, Spotify, hingga Google Maps — semua pakai prinsip yang sama yang akan kamu pelajari sekarang.
Setup Project: Buat API Express.js dari Nol
Sebelum ngoding, pastikan kamu sudah punya Node.js terinstall. Kalau belum, cek artikel pertama seri ini. Kita akan membangun CRUD API Node.js sederhana untuk mengelola data buku — cocok untuk latihan karena mudah dipahami tapi mewakili semua operasi penting.
# Buat folder baru mkdir buku-api cd buku-api # Inisialisasi project Node.js npm init -y # Install Express.js npm install express
index.js — fondasi server Expressconst express = require('express'); const app = express(); const PORT = 3000; // Middleware: agar Express bisa baca JSON dari request body app.use(express.json()); // Data sementara (nanti diganti database) let books = [ { id: 1, title: 'Atomic Habits', author: 'James Clear' }, { id: 2, title: 'Deep Work', author: 'Cal Newport' } ]; app.listen(PORT, () => { console.log(`Server jalan di http://localhost:${PORT}`); });
Baris app.use(express.json()) wajib ada sebelum semua route. Tanpa ini, req.body akan selalu undefined saat kamu kirim data lewat POST atau PUT. Ini adalah kesalahan paling umum pemula!
Implementasi CRUD API Node.js: GET, POST, PUT, DELETE
Sekarang saatnya membuat keempat operasi utama REST API Node.js. Tambahkan kode berikut ke file index.js sebelum baris app.listen().
// GET semua buku app.get('/api/books', (req, res) => { res.json({ success: true, data: books }); }); // GET satu buku by ID app.get('/api/books/:id', (req, res) => { const book = books.find(b => b.id === parseInt(req.params.id)); if (!book) return res.status(404).json({ message: 'Buku tidak ditemukan' }); res.json({ success: true, data: book }); });
// POST: tambah buku baru app.post('/api/books', (req, res) => { const { title, author } = req.body; // Validasi sederhana if (!title || !author) { return res.status(400).json({ message: 'title dan author wajib diisi' }); } const newBook = { id: books.length + 1, title, author }; books.push(newBook); res.status(201).json({ success: true, data: newBook }); });
// PUT: update buku by ID app.put('/api/books/:id', (req, res) => { const index = books.findIndex(b => b.id === parseInt(req.params.id)); if (index === -1) { return res.status(404).json({ message: 'Buku tidak ditemukan' }); } books[index] = { ...books[index], ...req.body }; res.json({ success: true, data: books[index] }); });
// DELETE: hapus buku by ID app.delete('/api/books/:id', (req, res) => { const index = books.findIndex(b => b.id === parseInt(req.params.id)); if (index === -1) { return res.status(404).json({ message: 'Buku tidak ditemukan' }); } books.splice(index, 1); res.json({ success: true, message: 'Buku berhasil dihapus' }); });
Perhatikan pola { ...books[index], ...req.body } di PUT. Ini adalah spread operator yang menggabungkan data lama dengan data baru — sangat berguna supaya field yang tidak dikirim tidak terhapus. Teknik ini juga bekerja seperti PATCH (partial update).
Cara Test REST API Node.js yang Sudah Kamu Buat
API sudah jadi — sekarang bagaimana cara mencobanya? Ada beberapa opsi. Yang paling populer untuk testing CRUD API Node.js adalah Postman atau ekstensi REST Client di VS Code. Jalankan server dulu dengan perintah:
# Jalankan server node index.js # Output yang benar: Server jalan di http://localhost:3000
{"title":"Sapiens","author":"Yuval Noah"}{"title":"Atomic Habits (Revised)"}Data yang kita simpan saat ini ada di dalam variabel books di memori server. Artinya, setiap kali server di-restart, data akan hilang kembali ke state awal. Untuk solusi permanen, kita butuh database — dan itulah yang akan dipelajari di artikel berikutnya!
Kamu Sudah Bisa Membangun REST API Node.js!
Di artikel ini kamu sudah belajar:
Dengan kemampuan buat API Express.js yang sudah kamu kuasai, kamu sudah punya fondasi untuk membangun back-end aplikasi sesungguhnya. Artikel ini adalah bagian dari Seri Belajar Node.js: Node.js from Zero to Zorro — terus ikuti serinya sampai tuntas!
💬 Punya pertanyaan atau stuck di bagian mana? Tulis di kolom komentar di bawah — saya baca semua komentar dan bantu jawab! Kalau artikel ini bermanfaat, share ke teman-teman yang juga lagi belajar Node.js. Satu share kamu bisa sangat berarti buat mereka 🙏
Artikel ini adalah bagian dari seri 16 artikel belajar Node.js secara sistematis — dari instalasi hingga deploy aplikasi production.
🗂️ Lihat Semua Artikel Seri →
No comments:
Post a Comment