Bu harika bir sorudur ve HTTP dönüş kodlarının tarihsel bağlamı (ve görünüşte çelişkili tanımları) göz önüne alındığında yine de oldukça önemlidir. Bu sorunun cevapları arasında bile çelişkili tanımlar var. Bu, kronolojik olarak hareket ederek netleştirilebilir.
RFC 2616 (Haziran 1999)
10.4.1 400 Kötü İstek
İstek hatalı biçimlendirilmiş sözdizimi nedeniyle sunucu tarafından anlaşılamadı. Müşteri, talebi değişiklik yapmadan tekrar etmemelidir.
Bu RFC'den itibaren, bu durum kodu yalnızca sözdizimsel olarak geçersiz isteklere uygulanır. Anlamsal doğrulama için durum kodlarında bir boşluk vardı. Böylece, RFC 4918 ortaya çıktığında, yeni bir kod doğdu.
RFC 4918 (Haziran 2007)
11.2. 422 İşlenemeyen Varlık
422 (İşlenemeyen Varlık) durum kodu, sunucunun istek varlığının içerik türünü anladığını (dolayısıyla bir 415 (Desteklenmeyen Medya Türü) durum kodunun uygun olmadığını) ve istek varlığının sözdiziminin doğru olduğunu (yani 400 (Kötü İstek) ) durum kodu uygun değil) ancak içerdiği talimatları işleme koyamadı. Örneğin, bir XML istek gövdesi iyi biçimlendirilmiş (yani, sözdizimsel olarak doğru), ancak anlamsal olarak hatalı XML talimatları içeriyorsa, bu hata durumu oluşabilir.
422 İşlenemeyen Varlık, 4xx durum kodlarının orijinal spesifikasyonundaki anlamsal doğrulama boşluğunu doldurmak için kuruldu. Bununla birlikte, 2014 yılında, 400'ü artık sözdizimine özgü olmayan genelleyen bir başka RFC ortaya çıkmıştır .
RFC 7231 (Haziran 2014, açıkça RFC 2616'nın modası geçmiş)
6.5.1. 400 Kötü İstek
400 (Kötü İstek) durum kodu, sunucunun, bir istemci hatası olarak algılanan bir şey nedeniyle (örneğin hatalı biçimlendirilmiş istek sözdizimi, geçersiz istek mesajı çerçeveleme veya aldatıcı istek yönlendirmesi) nedeniyle isteği işleme koyamayacağını veya işlemeyeceğini belirtir.
422 tanımının, 400'ün uygunsuz olmasının, 400'ün (RFC 2616'dan itibaren) yalnızca hatalı istek sözdizimi için döndürülmesi gerektiğinden kaynaklandığına dikkat edin. Bununla birlikte, RFC 7231'den itibaren katı sözdizimi hatası tanımı artık 400 için geçerli değildir .
Elimizdeki soruya dönün: 422 teknik olarak daha spesifik olsa da, bu bağlamda, API parametrelerinin anlamsal doğrulaması için 400 ya da 422'nin kullanıldığını görebiliyordum. 422'yi kendi API'lerimde kullanmakta tereddüt ediyorum, çünkü 422'nin tanımı bu noktada teknik olarak modası geçmiş (resmi olarak herhangi bir yerde tanınıp tanınmadığını bilmiyorum). Fran'in 422 kullanımını teşvik eden cevabında yer alan makale, 2012'de, RFC 7231'in HTTP 400'ü netleştirmesinden iki yıl önce yazıldı. Sadece birinin ya da diğerinin standartlaştırıldığından emin olun.