200
Ugh ... (309, 400, 403, 409, 415, 422) ... başarılı bir HTTP isteği için başarısız bir REST çağrısı için en iyi dönüş kodunun ne olduğunu tahmin etmeye, tartışmaya ve standartlaştırmaya çalışan birçok cevap .
Öyle yanlış HTTP durum kodları ve DİNLENME durum kodlarını karıştırmak için.
Bununla birlikte, onları karıştıran birçok uygulama gördüm ve birçok geliştirici benimle aynı fikirde olmayabilir.
HTTP dönüş kodları HTTP Request
kendisiyle ilgilidir. Bir REST çağrısı, Köprü Metni Aktarım Protokolü isteği kullanılarak yapılır ve çağrılan REST yönteminin kendisinden daha düşük bir düzeyde çalışır. REST bir kavram / yaklaşımdır ve çıktısı bir iş / mantıksal sonucudur, HTTP sonuç kodu ise bir aktarımdır .
Örneğin, / users / komutunu çağırdığınızda "404 Bulunamadı" ifadesinin döndürülmesi karıştırılabilir, çünkü bu şu anlama gelebilir:
- URI yanlış (HTTP)
- Kullanıcı bulunamadı (REST)
"403 Yasak / Erişim Reddedildi":
- Özel izin gerekiyor. Tarayıcılar kullanıcı / parola sorarak bunu kaldırabilir. (HTTP)
- Sunucuda yanlış erişim izinleri yapılandırılmış. (HTTP)
- Kimlik doğrulamanız gerekiyor (REST)
Ve liste '500 Sunucu hatası' (Apache / Nginx HTTP atılan hatası veya REST'te iş kısıtlaması hatası) veya diğer HTTP hataları vb. İle devam edebilir.
Koddan, hata nedeninin, HTTP (taşıma) hatasının veya REST (mantıksal) hatasının ne olduğunu anlamak zordur.
HTTP isteği fiziksel olarak başarıyla gerçekleştirilmişse , bulunan kayıt (lar) ne olursa olsun, her zaman 200 kod döndürmelidir. Çünkü URI kaynağı bulundu ve HTTP sunucusu tarafından işlendi. Evet, boş bir set döndürebilir. HTTP sonucu 200 olan boş bir web sayfası almak mümkün müdür, değil mi?
Bunun yerine bazı seçeneklerle 200 HTTP kodu döndürebilirsiniz:
- bir şeyler ters giderse JSON sonucundaki "hata" nesnesi
- Kayıt bulunamadığı takdirde boş JSON dizisi / nesnesi
- Daha iyi bir kullanım için önceki seçeneklerle birlikte bir bool sonucu / başarı bayrağı.
Ayrıca, bazı internet sağlayıcıları isteklerinizi kesebilir ve size 404 HTTP kodu verebilir. Bu, verilerinizin bulunmadığı anlamına gelmez, ancak taşıma düzeyinde yanlış bir şeydir.
Gönderen Wiki :
Temmuz 2004'te, Birleşik Krallık telekom sağlayıcısı BT Grubu, Internet Watch Foundation tarafından potansiyel olarak yasadışı olduğu belirlenen içerik taleplerine 404 hatası veren Cleanfeed içerik engelleme sistemini kurdu. Diğer ISS'ler aynı durumlarda bir HTTP 403 "yasak" hatası döndürür. Tayland ve Tunus'ta sansürü gizlemenin bir yolu olarak sahte 404 hatalarının kullanıldığı bildirildi. 2011 devriminden önce sansürün ağır olduğu Tunus'ta, insanlar sahte 404 hatalarının doğasının farkına vardı ve "görünmez sansürü" temsil eden "Ammar 404" adlı hayali bir karakter yarattı.
Neden böyle bir şeyle cevap vermiyorsun?
{
"result": false,
"error": {"code": 102, "message": "Validation failed: Wrong NAME."}
}
İstek mantıksal olarak başarısız olsa bile Google, her zaman 200'ü Geocoding API'sında durum kodu olarak döndürür: https://developers.google.com/maps/documentation/geocoding/intro#StatusCodes
REST isteği başarısız olsa bile Facebook başarılı HTTP istekleri için her zaman 200 döndürür: https://developers.facebook.com/docs/graph-api/using-graph-api/error-handling
Çok basit, HTTP durum kodları HTTP istekleri içindir. REST API Sizin, durum kodlarınızı tanımlayın.