Recraftory

Pengenalan API Design

Prinsip-prinsip dasar merancang API yang baik untuk backend

Apa itu API Design

  • Proses merancang antarmuka yang memungkinkan aplikasi berkomunikasi
  • API menjadi kontrak antara backend dan frontend atau layanan lain
  • Design yang baik memudahkan integrasi dan maintenance

Prinsip API yang Baik

Konsisten

  • Gunakan konvensi penamaan yang seragam di seluruh endpoint
  • Format response seragam untuk semua endpoint
  • Error handling dengan struktur yang sama

Intuitif

  • Nama endpoint mencerminkan resource yang diakses
  • Method HTTP sesuai dengan operasi yang dilakukan
  • Response mudah dipahami tanpa dokumentasi berlebihan

Versioned

  • API harus bisa berevolusi tanpa merusak consumer yang ada
  • Gunakan versioning sejak awal meski belum diperlukan
  • Jangan mengubah behavior endpoint yang sudah dipakai

Resource Naming

Gunakan Noun, Bukan Verb

  • /users bukan /getUsers
  • /orders bukan /createOrder
  • Method HTTP menunjukkan aksi: GET, POST, PUT, DELETE

Gunakan Plural

  • /users lebih konsisten daripada /user
  • /users/123/orders menunjukkan hubungan resource

Hierarchical Resources

  • /users/123/orders — orders milik user dengan ID 123
  • /orders/456/items — items dalam order dengan ID 456

Format Response yang Konsisten

{
  "data": {
    "id": 1,
    "nama": "Andi"
  },
  "meta": {
    "timestamp": "2024-01-01T00:00:00Z"
  }
}

Format Error yang Konsisten

{
  "error": {
    "code": "USER_NOT_FOUND",
    "message": "User dengan ID 123 tidak ditemukan",
    "status": 404
  }
}

HTTP Method yang Tepat

MethodOperasiIdempoten
GETMembaca dataYa
POSTMembuat data baruTidak
PUTMemperbarui seluruh dataYa
PATCHMemperbarui sebagian dataTidak selalu
DELETEMenghapus dataYa

Idempoten berarti hasil tetap sama meski request diulang.

Response Status Code yang Tepat

  • 200 — request berhasil diproses
  • 201 — resource baru berhasil dibuat
  • 204 — berhasil tanpa body response
  • 400 — data request tidak valid
  • 401 — belum autentikasi
  • 403 — tidak punya izin
  • 404 — resource tidak ditemukan
  • 409 — konflik data, misalnya data sudah ada
  • 422 — validasi gagal
  • 500 — kesalahan server

Praktik Terbaik

  • Gunakan HTTPS untuk semua API di production
  • Jangan pernah expose informasi sensitif di URL
  • Batasi ukuran request body untuk mencegah abuse
  • Dokumentasikan API dengan OpenAPI atau Swagger
  • Rate limit endpoint untuk mencegah overload