BAB 12 – REST API Dasar dengan Node.js dan Express.js

BAB 12 – REST API Dasar dengan Node.js dan Express.js

REST API (Representational State Transfer Application Programming Interface) adalah cara standar agar aplikasi bisa saling berkomunikasi melalui HTTP.

Hampir semua aplikasi modern—web, mobile, hingga IoT—menggunakan REST API sebagai jembatan data.

REST API memungkinkan:

  • frontend dan backend terpisah
  • data diakses dari berbagai platform
  • sistem lebih fleksibel dan scalable

Di Node.js, REST API paling sering dibangun menggunakan Express.js.


Konsep Dasar REST API yang Wajib Dipahami

REST API tidak rumit, tapi harus konsisten. Prinsip utamanya:

  • Resource direpresentasikan oleh URL
  • HTTP Method menentukan aksi
  • Response biasanya dalam format JSON

Contoh resource:

/users
/products
/orders

HTTP Method dalam REST API

Setiap method memiliki fungsi jelas.

GET     → mengambil data
POST    → menambah data
PUT     → mengubah data
DELETE  → menghapus data

Contoh yang benar:

GET /users
POST /users
GET /users/1
PUT /users/1
DELETE /users/1

Struktur Proyek REST API Sederhana

Struktur rapi sejak awal sangat penting.

rest-api/
├── index.js
├── routes/
│   └── userRoutes.js
├── data/
│   └── users.js
├── package.json

Struktur ini memisahkan routing dan data agar mudah dikembangkan.


Membuat Server REST API Dasar

import express from "express";

const app = express();
app.use(express.json());

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

Server siap menerima request API.


Membuat Data Dummy untuk API

// data/users.js
const users = [
  { id: 1, name: "Andi" },
  { id: 2, name: "Budi" }
];

export default users;

Data dummy digunakan untuk latihan sebelum ke database.


Membuat Endpoint GET (Read Data)

import users from "../data/users.js";

app.get("/users", (req, res) => {
  res.json(users);
});

Endpoint ini mengembalikan semua data user.


Membuat Endpoint GET by ID

app.get("/users/:id", (req, res) => {
  const id = Number(req.params.id);
  const user = users.find(u => u.id === id);

  if (!user) {
    return res.status(404).json({
      message: "User tidak ditemukan"
    });
  }

  res.json(user);
});

Contoh ini menunjukkan validasi data sederhana.


Membuat Endpoint POST (Create Data)

app.post("/users", (req, res) => {
  const newUser = {
    id: users.length + 1,
    name: req.body.name
  };

  users.push(newUser);

  res.status(201).json(newUser);
});

POST digunakan untuk menambah data baru.


Membuat Endpoint PUT (Update Data)

app.put("/users/:id", (req, res) => {
  const id = Number(req.params.id);
  const user = users.find(u => u.id === id);

  if (!user) {
    return res.status(404).json({
      message: "User tidak ditemukan"
    });
  }

  user.name = req.body.name;
  res.json(user);
});

PUT digunakan untuk memperbarui data.


Membuat Endpoint DELETE (Hapus Data)

app.delete("/users/:id", (req, res) => {
  const id = Number(req.params.id);
  const index = users.findIndex(u => u.id === id);

  if (index === -1) {
    return res.status(404).json({
      message: "User tidak ditemukan"
    });
  }

  users.splice(index, 1);
  res.json({
    message: "User berhasil dihapus"
  });
});

DELETE digunakan untuk menghapus resource.


Standar Response REST API yang Baik

Response API sebaiknya:

  • konsisten
  • jelas
  • memiliki status code

Contoh response yang baik:

{
  "success": true,
  "data": {...}
}

Ini memudahkan frontend membaca respon.


Testing REST API Menggunakan Postman

REST API sebaiknya diuji menggunakan:

  • Postman
  • Insomnia
  • Thunder Client (VS Code)

Testing membantu memastikan semua endpoint berjalan sesuai rencana.


Kesalahan Umum dalam REST API Pemula

Kesalahan yang sering terjadi:

  • URL tidak konsisten
  • status code diabaikan
  • validasi data kurang

Memperbaiki ini sejak awal akan sangat membantu ke depannya.


Kesimpulan

REST API adalah fondasi backend modern. Dengan Express.js, kita bisa:

  • membuat API dengan cepat
  • menjaga struktur tetap rapi
  • mengembangkan aplikasi secara bertahap

Bab ini menjadi dasar sebelum masuk ke database, autentikasi, dan deployment.