POST /api/v1/generate menerima field idempotencyKey untuk kasus ini.
Cara pakai
1
Buat satu key per keinginan bisnis
Bukan per request HTTP. Kalau pengguna menekan “Generate” untuk order #4711, order itu punya satu key, dan seluruh retry memakai key yang sama.
2
Kirim, dan kalau koneksi terputus, ulangi dengan key yang sama
Gunakan key yang sama sampai kamu menerima respons JSON apa pun.
3
Pahami respons replay
Kalau server sudah pernah melihat key itu, kamu menerima
200 OK (bukan 202) dengan job yang lama:Aturan penamaan key
- Panjang minimal 8 karakter. Kurang dari itu, server mengabaikan nilai kamu dan membuat key sendiri, sehingga retry-mu tidak terlindungi.
- Gunakan karakter yang aman di semua sistem: huruf, angka, tanda hubung, garis bawah.
- Campurkan id bisnis dengan bagian acak, contoh
order-4711-a39f2c7b. Pencocokan key di server berlaku global, jadi key yang terlalu mudah ditebak (misalnyacoba-1) berisiko bertabrakan dengan pengguna lain. - Key tidak kedaluwarsa. Sekali terpakai, selamanya tercatat — jadi jangan pakai timestamp sebagai key kalau kamu memang ingin request berikutnya menjadi job baru.
Contoh klien yang aman
Endpoint
POST /api/v1/upload dan GET tidak perlu idempotensi. Setiap unggahan menghasilkan aset baru, dan GET sudah tidak berdampak.