GET, PUT, DELETE doğası gereği idempotenttir — aynı URL’e tekrar istek atmak kaynak durumunu değiştirmez (veya kasten değiştirir ama tekrarlanabilir).
POST ise genellikle yeni bir kaynak oluşturur; aynı POST’u iki kez gönderirseniz iki kayıt oluşur.
Flextell API şu anda
Idempotency-Key header’ı gibi yerleşik bir idempotency mekanizmasını desteklemez. Bu sayfa, bu eksiğe rağmen güvenli yazma yapmanız için önerilen örüntüleri özetler. İleride resmi bir Idempotency-Key desteği eklenirse Changelog’da duyururuz.Hangi istekler dikkat ister?
Aşağıdaki yazma uçları yan etki yaratır ve yanlışlıkla iki kez gönderilmesi hoş olmayan sonuçlar doğurabilir:POST /v1/appointments— çift randevuPOST /v1/sales— çift satış kaydıPOST /v1/sales/{id}/payments— çift tahsilatPOST /v1/stocks/entry— çift stok girişiPOST /v1/stocks/adjustment— çift düzeltmePOST /v1/stocks/transfer— çift transferPOST /v1/conversations/{id}/messages— aynı mesajın iki kere gönderilmesi
Örüntü 1 — İstemcide kilit (en basit)
Bir butonu “gönderim sırasında” devre dışı bırakın:Örüntü 2 — Doğal anahtar ile kontrol
Veri modelinizin “doğal bir eşsiz anahtarı” varsa, isteği atmadan önce kaynağın zaten var olup olmadığını kontrol edin. Örnek: Randevu oluştururken(customer_id, starts_at, doctor_id) doğal olarak eşsizdir. Önce bir GET ile aynı kombinasyona sahip aktif randevu var mı kontrol edin; yoksa oluşturun.
Örüntü 3 — İstemci tarafı idempotency anahtarı
Kendi tarafınızda bir UUID üretip isteklerle eşleştirin. Aynı UUID için birden fazla gönderim olursa sunucuya atmadan önce yerel tablonuzdan önceki sonucu döndürün.Örüntü 4 — Sunucu yanıtını kontrol etme
Çağrı zaman aşımına uğradı veya ağ hatası verdi; istek gerçekten işlendi mi bilmiyorsunuz. Tekrar göndermeden önce kaynağı sorgulayın:Öneriler
- Para ve stok etkileyen uçlarda mutlaka bir deduplikasyon örüntüsü kullanın.
- Mesaj gönderimi gibi yüksek hacimli uçlarda kullanıcıya “gönderiliyor…” göstergesi bırakın; ağ hatasında satırı “tekrar dene” butonuyla kullanıcıya bırakın.
- Otomatik retry yalnızca
429,5xxve ağ hatalarında uygulanmalı;4xxhatalarında isteği tekrarlamak sorunu çözmez.