[英]Which http status code returns, 404 or 422?
我有一個帶有下一個資源的Rails API應用程序: /images
。 所有圖片都有一個owner
。
要創建新圖像,我接下來請求/ images:
image_info = { owner_id: '1234', name: 'img1' }
post :create, :format => "json", :image => @image_info
在圖像控制器中我做:
owner = User.find( params[:owner_id] )
如果owner_id
不存在或無效,則后端返回什么錯誤代碼,404或422與owner_id: invalid
?
更新我再次閱讀,我將我的答案改為422
因為你無法完成處理請求。 不可處理的實體是一個更好的匹配,你沒有請求一個對象,所以“找不到”沒有多大意義。 最后是你的選擇,只需選擇對你感覺更好的東西。
422不可處理的實體(WebDAV; RFC 4918)請求格式正確但由於語義錯誤而無法遵循
資料來源: http : //en.wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error
首先,我認為這個問題不應該特定於Ruby,因為它適用於大多數Web應用程序。
根據mozilla的開發指南https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/422 :
超文本傳輸協議(HTTP)422不可處理實體響應狀態代碼指示服務器理解請求實體的內容類型,並且請求實體的語法是正確的,但是它無法處理所包含的指令。
我會說代碼422因為請求路徑是正確的,所提供的數據也是如此,但是沒有這樣的實體。 此外,它在描述中說 - 請求不應該在沒有修改的情況下重復 - 這適用於這種情況。 當請求路徑錯誤時,我會說404最合適。 將其用於其他任何事情都會使發送請求的人感到困惑,因為它沒有提供足夠的信息。 如果您在案件中返回404,我會感到困惑,並認為我已將請求發送給錯誤的uri。 希望有所幫助
422 (Unprocessable Entity)
狀態代碼表示服務器理解請求實體的內容類型(因此415 (Unsupported Media Type)
狀態代碼是不合適的),並且請求實體的語法是正確的(因此是400 (Bad Request)
狀態代碼不合適)但無法處理包含的指令。 例如,如果XML請求主體包含格式正確(即語法正確)但語義錯誤的XML指令,則可能發生此錯誤情況。
(在這里找到)
由於情況並非如此,我會選擇404.查詢有效但未找到任何對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.