Langsung ke konten

Arsip

Desain API

3 artikel
Rekayasa Perangkat Lunak 20 Sep 2026 7 min read

Idempotency Key Membuat Retry Command Tetap Aman

Client dapat kehilangan response sebuah command meskipun server sudah menyelesaikan operasinya. Koneksi bisa terputus setelah pembayaran tercatat, job dibuat, atau order diterima. Dari sisi client, timeout tidak menunjukkan apakah command gagal sebelum dieksekusi atau berhasil sebelum response hilang. Retry diperlukan untuk availability, tetapi mengulang command yang mengubah state dapat menggandakan side effect. Idempotency key memberi identitas yang sama pada seluruh percobaan untuk satu command logis. Server menyimpan hasil yang terkait dengan identitas tersebut dan menggunakannya kembali ketika command yang sama datang lagi.

Rekayasa Perangkat Lunak 19 Sep 2026 5 min read

Precondition ETag Mencegah Lost Write pada API Update HTTP

Dua client dapat membaca resource yang sama, mengedit field berbeda, lalu mengirim update dengan selang beberapa detik. Jika server menerima kedua write tanpa memeriksa representasi yang menjadi dasar edit masing-masing client, request yang datang belakangan dapat diam-diam menggantikan state dari write sebelumnya. Transport berhasil, tetapi aplikasi kehilangan perubahan konkuren. HTTP menyediakan mekanisme conditional request untuk batas ini. Server dapat menyertakan entity tag pada representasi, lalu client mengirim kembali tag tersebut melalui If-Match saat mengajukan request yang mengubah state. Update hanya berjalan selama representasi yang dipilih masih memenuhi precondition yang diberikan.

Rekayasa Perangkat Lunak 19 Sep 2026 7 min read

Idempotency Key Mengikat Retry ke Satu Mutasi Logis

Client dapat kehilangan HTTP response setelah server melakukan commit terhadap mutasi yang diminta. Dari sisi client, status operasi belum pasti: koneksi gagal, tetapi kegagalan itu tidak menunjukkan apakah durable state sudah berubah. Retry terhadap POST yang sama kemudian dapat membuat order, percobaan pembayaran, reservasi, atau mutasi lain untuk kedua kalinya. Idempotency key memberi retry sebuah identitas stabil yang terpisah dari satu percobaan transport tertentu. Server dapat mengaitkan request berulang yang membawa identitas tersebut dengan satu operasi logis. Mekanisme ini mempersempit ambiguitas pada batas API, tetapi key saja bukan jaminan. Scope, persistensi, perbandingan request, kontrol konkurensi, dan kebijakan replay menentukan arti sebenarnya dari pengiriman berulang.