Üst kaynak bulunamadığında POST'a uygun yanıt durum kodu nedir?


Yanıtlar:


15

404 NOT FOUNDbu kimliğe sahip kaynak mevcut olmadığından uygun yanıt görünüyor. Anlamak çok açık ve arandıysa aynı cevabı bekliyorsunuz a/{id}.

409 CONFLICTbana daha iyi bir seçim gibi görünmüyor, çünkü örneğinizde üst kaynak bulunamadığı zaman bir 409 döndüreceksiniz :).

Ancak en önemli şeyin API'nizde tutarlı olduğunu hatırlar


Katılıyorum. Var olmayan bir klasöre yazmaya çalışacaksanız, bir çakışma mı yoksa eksik bir klasör hatası mı? Bana bu şekilde daha sezgisel geliyor.
Neil

"Klasör", var olmayan bir yolu mu kastediyorsunuz?
Dherik

Yani dosya sistemindeki gibi bir klasör.
Neil

Senaryoyu ayrıntılandırabilir misiniz? Çünkü değişir. Klasör sunucu için bekleniyordu ve (ne olursa olsun) orada değilse bu bir sunucu hatası (5xx) bir istemci hatası (4xx) olduğunu düşünüyorum. Bu klasör değeri istemci tarafından kaynağa aktarılırsa (olarak id), 404'tür. Ancak klasör gövdeye aktarılmışsa, bu başka bir şey olabilir (412, 422 ... "doğrulama başarısız oldu: klasör mevcut değil "). Sormak ve tartışmak iyi bir soru.
Dherik

Sunucudan /nonexistent/help.html yolunu içeren bir dosya sorarsanız ve / varolmayan klasörü mevcut değilse, buna yalnızca bir açık yanıt vardır. 404 dosyası bulunamadı! Bir /home/help.html dosyası bile olabilir ve yanıt farklı olmaz. Bu açıkça bir REST uygulamasıdır, ancak mantığın neden değişmesi için hiçbir neden göremiyorum. Önce ebeveyn olmalıdır.
Neil

4

@ Dherik'in cevabına ek olarak.

URI'ler tanımlayıcılardır , bu nedenle ( /a/{id}/bbir tanımlayıcıdır) unutmayın. URI WWW için anlamsızdır ve bu yüzden HTTP istemcisi içindir.

404 doğru cevaptır . Esasen, sunucu cevap veriyor

Böyle bir kimliğe sahip herhangi bir kaynak bulamadım. Kaynak bulunamadı 1

Eksik kaynağın ebeveyn veya çocuk olması önemli değildir.

Geliştiriciler olarak bizler, URI'deki hiyerarşileri ve yolları görüyoruz , ancak HTTP istemcileri görmüyor. Başka bir deyişle, HTTP yalnızca HTTP istemcileri tarafından yorumlanır, insanlar tarafından (devs, son kullanıcılar, vb.) Yorumlanmaz.

Şüphe durumunda, hangi kodun sizin için anlamlı olduğunu sormayın (insan). HTTP istemcisi için hangi kodun anlamlı olduğunu sorun. HTTP istemcisinin nasıl davranmasını istersiniz?

Neden? Çünkü bazı durum kodu bu istemcilerin belirli işlemleri gerçekleştirmesine neden olur. Örneğin, 302 . Bu kod genellikle web tarayıcılarının yanıt başlıklarında bildirilen belirli bir konuma (URI) yönlendirmesini sağlar.

Bu sizin durumunuz olmayabilir, ancak farkında olmak önemlidir. Sonuçta, HTTP durum kodları HTTP istemcilerine yöneliktir. Bizim uygulamalarımıza değil. Kişilere değil.


1: 409 , seyrüsefer hatası olarak nadiren uygulanır. Genellikle uzaktan işlemlerin (silme, güncelleme, yeni vb.) Yürütülmesini içerir. Ancak URI mevcut olmalıdır. Aksi takdirde, 404 geçerli olacak

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.