3 回答

TA貢獻1818條經驗 獲得超3個贊
如果“驗證失敗”表示請求中存在某些客戶端錯誤,請使用HTTP 400(錯誤請求)。例如,如果URI應該具有ISO-8601日期,而您發現它的格式錯誤或引用的日期是2月31日,則您將返回HTTP400。如果您希望實體主體中格式正確的XML,則返回同上。它無法解析。
(1/2016):在過去的五年中,WebDAV更為特定的HTTP 422(不可處理實體)已成為HTTP 400的非常合理的替代品。例如,請參見JSON API中的用法。但是請注意,HTTP 422 尚未將其納入HTTP 1.1,RFC-7231中。
Richardson和Ruby的RESTful Web服務包含了有關何時使用各種HTTP響應代碼的非常有用的附錄。他們說:
400(“錯誤請求”)的
重要性:高。
這是一般的客戶端錯誤狀態,在沒有其他合適的4xx錯誤代碼時使用。當客戶端與PUT或POST請求一起提交表示形式且表示形式格式正確時,通常會使用該格式,但這沒有任何意義。(第381頁)
和:
401(“未授權”)
重要性:高。
客戶端嘗試在受保護的資源上操作而未提供適當的身份驗證憑據。它可能提供了錯誤的憑據,或者根本沒有提供。憑據可以是用戶名和密碼,API密鑰或身份驗證令牌,無論所涉及的服務期望什么??蛻舳送ǔl出一個URI請求并接受一個401,以便它知道要發送哪種憑證以及采用哪種格式。[...]

TA貢獻1820條經驗 獲得超2個贊
這里是:
rfc2616#section-10.4.1-400錯誤的請求
由于語法格式錯誤,服務器無法理解該請求??蛻舨粦跊]有修改的情況下重復請求。
rfc7231#section6.5.1-6.5.1。400錯誤的要求
400(錯誤請求)狀態代碼表示服務器由于某些原因(例如格式錯誤的請求語法,無效的請求消息框架或欺騙性的請求路由)而無法或將不會處理請求。
指格式錯誤(格式不正確)的情況!
rfc4918-11.2。422無法處理的實體
422(不可處理實體)狀態代碼表示服務器
理解請求實體的內容類型(因此415(不支持的媒體類型)狀態代碼不合適),并且請求實體的語法正確(因此400(錯誤請求) )狀態代碼不合適),但無法處理其中的說明。例如,如果XML請求主體包含格式正確(即,語法正確)但語義錯誤的 XML指令,則可能發生此錯誤情況。
結論
經驗法則:[_] 00涵蓋最普通的情況以及指定代碼未涵蓋的情況。
422最適合對象驗證錯誤(精確地是我的建議:)
至于語義上的錯誤-考慮類似“此用戶名已存在”驗證之類的事情。
400錯誤地用于對象驗證
添加回答
舉報