NodeJS #17: Membuat API Sendiri dengan Express (Endpoint GET)

🍭 NodeJS #17: Membuat API Sendiri dengan Express (Endpoint GET)

Halo, calon backend developer! 👋

Di tutorial-tutorial sebelumnya, kita sudah belajar mengambil data dari API orang lain dan menampilkannya di web. Sekarang saatnya kita membuat API sendiri! API adalah jantung dari aplikasi modern. Dengan membuat API, kita bisa menyediakan data untuk digunakan oleh aplikasi frontend (web, mobile, desktop) atau bahkan untuk konsumsi publik. Kita akan mulai dari yang paling dasar: endpoint GET yang mengembalikan data JSON sederhana. Yuk, kita mulai! 🚀

🧐 Apa yang Akan Kita Buat?

Kita akan membuat API sederhana untuk data buah-buahan. API kita akan memiliki beberapa endpoint:

  • GET /api/buah → mengembalikan daftar semua buah
  • GET /api/buah/:id → mengembalikan satu buah berdasarkan ID
  • GET /api/buah/search?nama=... → mencari buah berdasarkan nama (query parameter)

📁 Persiapan Proyek

Buat folder baru, misalnya api-sendiri. Buka terminal di folder tersebut dan jalankan:

npm init -y
npm install express

Buat file app.js sebagai entry point.

🏗️ Struktur Dasar Server

Buka app.js dan tulis kode dasar berikut:

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

// Data dummy buah-buahan (nanti bisa diganti dengan database)
let buah = [
  { id: 1, nama: 'Apel', warna: 'Merah', harga: 5000 },
  { id: 2, nama: 'Jeruk', warna: 'Oranye', harga: 7000 },
  { id: 3, nama: 'Mangga', warna: 'Kuning', harga: 10000 },
  { id: 4, nama: 'Pisang', warna: 'Kuning', harga: 4000 }
];

// Middleware untuk membaca JSON (jika ada request dengan body, nanti untuk POST)
app.use(express.json());

// ENDPOINT AKAN DITULIS DI SINI

app.listen(port, () => {
  console.log(`API berjalan di http://localhost:${port}`);
});

Kita punya array buah sebagai data sementara. Nanti kita akan membuat endpoint-endpoint yang mengakses data ini.

🌐 Endpoint GET Semua Buah

Tambahkan kode berikut sebelum app.listen:

// GET /api/buah - Mengembalikan semua buah
app.get('/api/buah', (req, res) => {
  res.json(buah);
});

res.json() adalah cara Express untuk mengirim response dalam format JSON. Fungsi ini otomatis mengatur header Content-Type: application/json.

Jalankan server dengan node app.js dan buka browser di http://localhost:3000/api/buah. Kamu akan melihat data array buah dalam format JSON. Coba juga akses dengan Postman atau alat lain.

💡 Catatan: res.json() sama dengan res.send() untuk objek/array, tapi lebih eksplisit.

🔍 Endpoint GET Satu Buah Berdasarkan ID

Kita ingin mengambil satu buah berdasarkan ID yang diberikan di URL. Misalnya /api/buah/2 mengembalikan buah dengan id=2. Gunakan parameter route.

// GET /api/buah/:id - Mengembalikan satu buah berdasarkan ID
app.get('/api/buah/:id', (req, res) => {
  const id = parseInt(req.params.id);
  const buahItem = buah.find(b => b.id === id);

  if (buahItem) {
    res.json(buahItem);
  } else {
    res.status(404).json({ pesan: 'Buah tidak ditemukan' });
  }
});

Penjelasan:

  • req.params.id mengambil nilai dari parameter :id di URL. Nilainya berupa string, jadi kita ubah ke number dengan parseInt().
  • buah.find() mencari buah dengan id yang cocok.
  • Jika ditemukan, kirim data dengan status 200 (default).
  • Jika tidak, kirim status 404 (Not Found) dan pesan error dalam JSON.

Coba akses http://localhost:3000/api/buah/2 dan http://localhost:3000/api/buah/99 untuk melihat perbedaannya.

🔎 Endpoint Pencarian dengan Query Parameter

Kadang kita ingin mencari data berdasarkan kriteria tertentu, misalnya buah dengan nama mengandung "ap". Gunakan query parameter.

// GET /api/buah/search?nama=... - Mencari buah berdasarkan nama
app.get('/api/buah/search', (req, res) => {
  const namaQuery = req.query.nama ? req.query.nama.toLowerCase() : '';
  
  if (!namaQuery) {
    return res.status(400).json({ pesan: 'Parameter nama harus diisi' });
  }

  const hasil = buah.filter(b => b.nama.toLowerCase().includes(namaQuery));

  res.json(hasil);
});

Coba akses: http://localhost:3000/api/buah/search?nama=ang (mencari "Mangga" karena mengandung "ang"). Jika tidak ada parameter, kita kirim status 400 (Bad Request).

⚠️ Perhatikan urutan penulisan route. Route dengan path tetap (seperti /search) harus ditulis sebelum route dengan parameter dinamis (/:id). Jika dibalik, Express akan menganggap "search" sebagai ID.

📦 Menambahkan Data Lain

Kita bisa menambahkan endpoint untuk data lain, misalnya /api/siswa atau /api/produk. Contoh sederhana:

let siswa = [
  { id: 1, nama: 'Budi', kelas: '6A' },
  { id: 2, nama: 'Ani', kelas: '6B' }
];

app.get('/api/siswa', (req, res) => {
  res.json(siswa);
});

Dengan pola yang sama, API kita bisa berkembang.

🧪 Menguji API dengan Postman

Untuk menguji endpoint GET, browser sudah cukup. Tapi untuk POST, PUT, DELETE nanti kita perlu Postman. Install Postman dari sini jika belum punya.

Buka Postman, buat request baru dengan method GET ke http://localhost:3000/api/buah. Lihat responsnya.

🧠 Tips Penting

  • Gunakan plural nouns untuk endpoint, misal /buah bukan /buahs (dalam bahasa Inggris, buah tidak beraturan). Tapi konsisten.
  • Berikan status code yang sesuai: 200 (OK), 201 (Created), 404 (Not Found), 400 (Bad Request), 500 (Internal Server Error).
  • Selalu kirim respons dalam format JSON (kecuali untuk file atau HTML).
  • Struktur respons yang baik: untuk error, kirim objek dengan properti error atau pesan.

🧪 Latihan Mandiri

  1. Buat endpoint /api/produk yang mengembalikan daftar produk (id, nama, harga, stok).
  2. Buat endpoint /api/produk/:id untuk mengambil satu produk.
  3. Buat endpoint /api/produk/search?kategori=... untuk mencari berdasarkan kategori (tambahkan properti kategori di data produk).
  4. Buat endpoint /api/buah yang mengembalikan hanya buah dengan warna tertentu menggunakan query parameter ?warna=....

📚 Rangkuman

Endpoint Method Deskripsi Contoh
/api/buah GET Mengambil semua buah GET /api/buah
/api/buah/:id GET Mengambil satu buah berdasarkan ID GET /api/buah/2
/api/buah/search GET Mencari buah berdasarkan nama (query) GET /api/buah/search?nama=ap

🏁 Penutup

Selamat! Kamu sekarang sudah bisa membuat API sendiri dengan Express, khususnya untuk mengambil data (GET). Ini adalah langkah awal menjadi backend developer. Di tutorial selanjutnya (NodeJS #18) kita akan belajar API dengan parameter dinamis dan query lebih dalam, serta menambahkan endpoint POST untuk menambah data. Sampai jumpa!

Jangan lupa untuk mencoba latihan dan bereksperimen sendiri. Kalau ada pertanyaan, tulis di komentar. Selamat coding! 💻😊


Ditulis dengan ❤️ untuk para pemula yang ingin menjadi programmer handal.

Lebih baru Lebih lama

نموذج الاتصال