← Belajar

KELAS GRATIS / BAHASA INDONESIA

HTTP dan API: kontrak dua sisi

Fundamental Engineering · Materi 13 dari 20

0 / 20 selesaiDisimpan di browser ini

MATERI 13 / 20

HTTP dan API: kontrak dua sisi

API adalah batas tempat dua bagian sistem bertukar pesan. Menentukan kontraknya membantu klien dan server menghadapi keberhasilan, input salah dan kegagalan jaringan dengan konsisten.

Request membawa tujuan dan konteks

Permintaan memiliki method, alamat, header dan kadang body. Tentukan data yang wajib dikirim dan identitas yang diperlukan. Server tidak boleh mempercayai harga atau kepemilikan hanya karena klien mengirimkannya. Ambil keputusan penting dari data dan izin yang dikelola server.

Respons perlu bentuk yang disepakati

Status HTTP menyampaikan kategori hasil, sedangkan body menjelaskan data atau error yang dibutuhkan aplikasi. Tentukan nama field dan perilaku saat data kosong. JSON yang valid masih bisa memiliki bentuk salah. Periksa kontrak sebelum mengubah state menjadi berhasil, lalu tampilkan pesan yang membantu tanpa membocorkan detail internal.

Tidak menerima respons bukan bukti gagal simpan

Jaringan bisa putus setelah server menyimpan data tetapi sebelum respons diterima. Mengulangi operasi dapat membuat duplikat. Untuk tindakan yang sensitif terhadap pengulangan, rancang identitas operasi dan aturan idempotensi di server. Di klien, bedakan loading, berhasil, gagal dan status yang belum dapat dipastikan.

CONTOH UNTUK DIPIKIRKAN
POST /api/catatan
Body: {"judul":"Rencana"}
201: {"id":"c1","judul":"Rencana"}
400: {"error":{"code":"INVALID_TITLE","message":"Isi judul"}}
Jaringan putus → periksa status sebelum mengulang operasi sensitif.

Giliran kamu.

Tulis kontrak endpoint membuat catatan: request, respons berhasil, input kosong, tidak login dan jaringan putus. Tentukan cara mencegah pengulangan membuat duplikat.

  • Bentuk request dan respons tertulis
  • Status jaringan dibedakan dari status bisnis
  • Pengulangan operasi dipikirkan
Cek pemahaman

Klien timeout setelah mengirim permintaan simpan. Apa yang dapat disimpulkan?

Bacaan pendamping

MDN HTTP