Apa itu API? — API

Pernah pesan Grab Food, transfer ke OVO, login app pake Google, atau ngeliat cuaca di HP? Behind the scene, semua itu jalan via API — cara aplikasi kamu…

API (Application Programming Interface) adalah cara satu program meminta sesuatu ke program lain, lewat aturan yang sudah disepakati: apa saja yang boleh diminta, dan seperti apa jawabannya. Bayangin makan di restoran. Kamu gak masuk dapur. Kamu baca menu, bilang pesananmu ke pelayan, pelayan membawanya ke dapur, lalu balik membawa makanan. Kamu adalah client, dapur adalah server, menu dan pelayannya adalah API. Yang gak ada di menu gak bisa dipesan.

🧪 Tebakan cepat: aplikasi Toko Buku meminta buku nomor 99, padahal bukunya gak ada. Server-nya crash, diam saja, atau tetap menjawab? Tebak dulu, jawabannya ada di bagian "Request dan response".

Client, server, dan API

Sepanjang track ini kita pakai satu contoh yang terus tumbuh: API Toko Buku di https://api.tokobuku.test (akhiran .test memang khusus untuk contoh, gak ada di internet). Isinya dua jenis data: buku (books) dan penulis (authors).

Menu API Toko Buku untuk awal:

Permintaan Jawabannya
GET /books daftar semua buku
GET /books/1 satu buku, nomor 1
GET /authors daftar semua penulis

Website dan aplikasi HP-nya gak punya database sendiri-sendiri. Dua-duanya meminta ke API yang sama, jadi datanya selalu sama.

Request dan response

Client dan server ngobrol pakai HTTP, protokol (aturan main) yang dipakai web untuk mengirim permintaan dan jawaban. Satu permintaan disebut request, jawabannya disebut response.

Aplikasi meminta buku nomor 1:

GET /books/1 HTTP/1.1
Host: api.tokobuku.test
Accept: application/json

Server menjawab:

HTTP/1.1 200 OK
Content-Type: application/json

{"id": 1, "title": "Laskar Pelangi", "author_id": 1, "price": 89000, "stock": 12}

Sekarang buku nomor 99, yang gak ada:

HTTP/1.1 404 Not Found
Content-Type: application/json

{"error": "Book not found"}

Server gak crash dan gak diam. Dia tetap menjawab, dengan status 404 Not Found dan body yang menjelaskan masalahnya. Itu jawaban tebakannya. Client membaca status code-nya dulu, baru memutuskan mau menampilkan buku atau pesan "buku gak ketemu".

Minta sesuatu yang gak ada di menu juga tetap dijawab. API Toko Buku di awal cuma bisa dibaca, jadi DELETE /books/1 dijawab 405 Method Not Allowed plus header Allow: GET, daftar method yang boleh di alamat itu.

REST: alamat untuk benda, method untuk aksi

REST adalah gaya mendesain API di atas HTTP yang paling banyak dipakai. Dua aturan pokoknya:

  1. Tiap benda (disebut resource) punya alamat sendiri, ditulis sebagai kata benda: /books, /books/1, /authors.
  2. Aksinya dipilih lewat method: GET membaca, POST membuat, PUT atau PATCH mengubah, DELETE menghapus.

Jadi URL gak perlu berisi kata kerja. Bandingkan:

Kurang tepat Gaya REST
POST /api/hapusSiswa DELETE /api/siswa/5
GET /getBooks GET /books

POST /api/hapusSiswa salah dua kali: ada kata kerja (hapus) di URL, dan method-nya POST, padahal aksinya menghapus. Method-nya yang harus bilang "hapus", URL-nya cukup menunjuk siswa yang mana.

Endpoint pertamamu

Latihan di pelajaran ini sudah berisi kodenya. Editornya memakai app kecil bergaya Express (library server Node.js yang paling populer), dan pelajaran-pelajaran berikutnya memakai app yang sama:

app.get("/api/status", (req, res) => {
  res.json({ status: "ok", message: "API berjalan!" });
});

Waktu kamu klik Jalankan, tester mengirim GET /api/status ke kodemu dan mengecek jawabannya 200.

⚠️ Jebakan yang sering ketemu

TL;DR: API (Application Programming Interface) adalah daftar permintaan yang boleh diajukan client ke server, plus bentuk jawabannya. Client mengirim request (method, path, header, body) lewat HTTP, server membalas response (status code, header, body). Data yang gak ada tetap dijawab, dengan 404 Not Found; aksi yang gak ada di menu dijawab 405. REST: tiap resource punya alamat berupa kata benda (/books/1), aksinya dipilih lewat method (GET, POST, PUT/PATCH, DELETE), jadi gak ada kata kerja di URL. Di latihan, app.get(path, (req, res) => res.json(...)) mendaftarkan endpoint yang menjawab JSON dengan status 200.

Yang akan kamu pelajari