/api/v1/tasks201 CreatedREST API yang baik bukan sekadar mengembalikan JSON. Ia memiliki kontrak URL, method, status code, validasi, autentikasi, dan bentuk error yang konsisten.
Rancang resource, bukan nama aksi
| Kebutuhan | Method & endpoint |
|---|---|
| Daftar tugas | GET /api/v1/tasks |
| Detail tugas | GET /api/v1/tasks/{id} |
| Membuat tugas | POST /api/v1/tasks |
| Mengubah tugas | PATCH /api/v1/tasks/{id} |
| Menghapus tugas | DELETE /api/v1/tasks/{id} |
Hindari URL seperti /getTasks atau /deleteTask. Method HTTP sudah menyatakan aksi.
Respons yang dapat diprediksi
{
"data": {
"id": 184,
"title": "Review pull request",
"status": "open",
"created_at": "2026-07-26T08:15:00Z"
}
}Untuk validasi gagal, kembalikan status 422 dan detail per field. Untuk resource tidak ditemukan gunakan 404, bukan 200 dengan pesan “failed”.
{
"error": {
"code": "VALIDATION_FAILED",
"message": "Data yang dikirim belum valid.",
"fields": { "title": ["Title wajib diisi."] }
}
}Menguji lewat Postman
- 1Buat environment dengan variabel
base_urldantoken. - 2Simpan request dalam collection berdasarkan resource.
- 3Tambahkan test untuk status code, header, dan bentuk JSON.
- 4Jalankan collection dengan Collection Runner atau Newman di CI.
pm.test("Status is 201", () => {
pm.response.to.have.status(201);
});
pm.test("Response contains an id", () => {
const json = pm.response.json();
pm.expect(json.data.id).to.be.a("number");
});Versioning dan pagination
Gunakan versi ketika perubahan memutus kompatibilitas. Untuk koleksi besar, terapkan cursor pagination agar stabil saat data baru terus masuk. Dokumentasikan limit, filter, sorting, dan contoh error sejak awal.
