REST API'sindeki kritik hata olmayan uyarılar


9

Bazı DELETE, POST veya PUT gibi entpoinds için bir hata döndürebilir bazı doğrulama kuralları var bir REST API var.

Şimdi, kritik olmayan bir hata gibi yeni bir hata türüne ihtiyacım var, bu normal bir şekilde başarısız olmalı, ancak gönderilecek bir "baskı uyarıları" bayrakları varsa eylem için gitmelidir. Böyle bir kullanıcıya şu soruyu sorabilirsiniz: "Bu durumu değiştirmek istediğinizden emin misiniz, henüz bitirmediniz"

Soru : Bu tür hatalar için en iyi uygulama var mı?

İkincil sorular :

  • Kullanabileceğim bu tür davranışlar için herhangi bir HTTP semantiği var mı?
  • REST fikrini hala takip ediyor muyum (benim için öyle görünüyor) - Vatansız tutuyorum

Bir kullanıcıya böyle bir uyarının gösterilip gösterilmeyeceğine nasıl karar verirsiniz? Uygulama durumunu denetlemek için API son noktasını çağırırsınız ve daha sonra kullanıcıya böyle bir iletişim kutusu sunar ve kullanıcı yanıt verene kadar kullanıcı arabirimini engellersiniz. Sonra gerçek aramayı yaparsınız. Bunu REST API ile de modellemelisiniz: belirli görevleri yapmak için kaydedilip kaydedilmediğini kontrol etmek için bir uç nokta ekleyin. Bu şekilde, herhangi bir API kullanıcısı "uçuş öncesi" kontrolleri yapabilir ve hatta bir kullanıcıya karar verebilir. HTTP durum kodu yaklaşımınız, rm /filedosyanın yine de silinirken salt okunur olduğunu "uyarır" gibidir.
try-catch-nihayet

Bu, işletme protokol durum kodu ile çakıştığında olur. Neyse. Kendi 'HTTP durum kodunuzu kullanmaya çalıştınız mı? Twitter yapabilirse siz de. Diyelim ki 6xx? Zaten şimdiye kadar biliyorum, 4xx olsa bile yanıt gövdesine mesaj ekleyebilirsiniz (sizin durumunuzda hangi aralık apropiated olurdu).
Laiv

Sonunda 409 CONFLICTuyarı yanıtı için kullandım . Bu şekilde, istemciye çağrıyı aynı uç nokta ve gövde ile "kuvvet = 1" parametresi ile zorlayabileceği bildirilir
user237329

Yanıtlar:


4

Http'de uyarı sonucu kodları yoktur, bir başarı (200) veya bir hata (400, 500) döndürürsünüz. Bildiğim tek şey, ne istediğinize benzer olabilir, kod 401 'yetkisiz' gibi bir şeydir - bu açıkça bir başarısızlıktır, ancak çoğu istemcinin kimlik bilgileriyle bağlantıyı otomatik olarak yeniden denemesine neden olur.

Bir REST API için, sunucuya isteğin durumunu ve sonucun nasıl ele alınacağını söylemeniz gerekir - bir PUT gönderemez ve istemci tamamlanmadıysa bir hata bekleyemezsiniz veya varsa başarılı olur - sunucunun bunu bilmesi gerekir doğru sonuç kodunu geri göndermek için

Böylece isteğinizle birlikte 'uyarıları bastır' bayrağını gönderebilirsiniz, ayarlanmazsa sunucu bir 409 hata kodu (veya benzeri) döndürür ve ayarlanmışsa bunun yerine 200 kodu döndürür. Durum değişikliği gönderildikten sonra kullanıcıdan 'bu durumu değiştirmek istiyor musunuz?'

Sunucudan kullanıcının elbette durumunu değiştirip değiştiremeyeceğini sormak için bir istekte bulunabilirsiniz ve bundan sonra uygun bir istekte bulunabilirsiniz.


Hiçbir şekilde bunun doğru bir şey olduğunu söyleyerek değilim, ancak 3xx kodları müşteri devam etmeye karar verebilir uyarı veya uyarı kodu bir tür olarak görülebilir. Bununla birlikte, bir eylem yapmayı tercih ederim ya da yapmamayı tercih ederim ve belki de iade edilen gövdede veya başlıklarda ek bilgiler içeren bir yanıt döndürürüm.
Archimedix

0

Kullanıcının normal hata işlemenizi geçersiz kılmasına izin vermek istiyorsanız, genişletilmiş HTTP başlıklarında ek bilgiler içeren bir 200 BAŞARI durumu döndürmeyi düşünebilirsiniz. Örneğin, geri dönebilirsiniz

X-APP-STATUS: 422 Unprocessable entity
X-APP-SOURCE: Invalid ID 'fo0'

Bu, istemci tarafı kodunuza kullanıcıyı uyarmak veya kendi başına düzeltici işlemler yapmak için gerekli bilgileri verecektir.


2
"Başarıyla başarısız oldum" diyen yanıtları hiç
beğenmedim
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.