亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

REST API服務針對驗證失敗返回什么適當的HTTP狀態代碼?

REST API服務針對驗證失敗返回什么適當的HTTP狀態代碼?

呼啦一陣風 2019-11-05 10:37:20
每當我在基于Django / Piston的REST API應用程序中遇到驗證失敗時,我當前都會返回401未經授權??催^HTTP狀態代碼注冊表后, 我不認為這是驗證失敗的合適代碼,大家都建議什么?400錯誤的要求401未經授權403禁止405方法不允許406不可接受412前提條件失敗417期望失敗422無法處理的實體424依賴失敗更新:上面的“驗證失敗”表示應用程序級別的數據驗證失敗,即,錯誤指定的日期時間,虛假的電子郵件地址等。
查看完整描述

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,以便它知道要發送哪種憑證以及采用哪種格式。[...]


查看完整回答
反對 回復 2019-11-05
?
DIEA

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錯誤地用于對象驗證


查看完整回答
反對 回復 2019-11-05
  • 3 回答
  • 0 關注
  • 1223 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號