簡體   English   中英

哪個http狀態代碼返回404或422?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM