Materi
Kontrak API adalah janji tertulis antara penyedia API dan pemakainya: permintaan seperti apa yang diterima, dan respons seperti apa yang dikembalikan untuk setiap kasus. Panduan desain API layanan mikro di Azure Architecture Center menyebut API sebagai kontrak antara layanan dan kliennya, dan mengingatkan bahwa perubahan API bisa merusak klien yang bergantung padanya. Kontrak bisa berupa tabel di dokumentasi atau berkas skema; bentuknya berbeda, isinya sama.
| Kasus GET /v1/buku/{isbn} | Status | Content-Type | Badan |
|---|---|---|---|
| Buku ditemukan | 200 | application/json | objek buku |
| ISBN tidak terdaftar | 404 | application/problem+json | rincian galat |
| Tanpa token | 401 | application/problem+json | rincian galat |
Pengujian kontrak memeriksa tiga lapis untuk setiap kasus: kode status, jenis isi di header Content-Type, dan bentuk badan. Ketiganya diperiksa terpisah karena masing-masing bisa salah sendiri. MDN mencatat Response.ok bernilai true untuk status 200 sampai 299 tanpa melihat isi badan. Server yang sedang dirawat bisa menjawab 200 dengan halaman HTML, dan server yang salah rancang bisa menjawab 200 dengan badan berisi pesan gagal. Keduanya lolos pemeriksaan status, dan keduanya melanggar kontrak.
Content-Type berisi jenis media, kadang diikuti parameter seperti charset. RFC 9110 menyatakan bagian type dan subtype tidak membedakan huruf, jadi application/json; charset=utf-8 dan Application/JSON menyatakan jenis yang sama. Di kelas ini respons API selalu berupa objek tiruan { status, headers, body } dengan nama header berhuruf kecil, sehingga hasil setiap uji sama setiap kali dijalankan.