簡體   English   中英

我們可以使用HTTP代碼422(不可處理的實體)進行Get操作嗎?

[英]Can we use http code 422(Unprocessable Entity) for Get operations?

團隊-我們正在使用422 HTTP Status Code for validations代碼進行HTTP GET操作的422 HTTP Status Code for validations 但是不確定,是否可以使用get操作。 422 unprocessable實體聽起來更像是請求主體驗證-請幫助

謝謝

通常,GET請求沒有有效負載。 我們使用GET從Server / DB檢索數據,這些數據在創建或插入時已經過驗證。 這意味着我們在檢索時無需驗證數據。

如果我們有有效載荷,則應使用POST。 我們可以根據需要將422或400與POST一起使用。

得到

GET方法意味着檢索由Request-URI標識的任何信息(以實體形式)。 如果Request-URI指的是數據產生過程,則應將產生的數據作為響應中的實體而不是過程的源文本作為實體返回,除非該文本恰好是過程的輸出。

開機自檢

POST方法用於請求源服務器接受請求中包含的實體作為請求行中Request-URI標識的資源的新下屬。 POST旨在允許采用統一的方法來覆蓋以下功能:

  - Annotation of existing resources; - Posting a message to a bulletin board, newsgroup, mailing list, or similar group of articles; - Providing a block of data, such as the result of submitting a form, to a data-handling process; - Extending a database through an append operation. 

400

400(錯誤請求)狀態代碼表示由於某些原因,服務器無法或不會處理請求
是客戶端錯誤(例如,格式錯誤的請求語法,無效的請求
消息框架或欺騙性請求路由)。

422

422(不可處理實體)狀態代碼表示服務器
了解請求實體的內容類型(因此
415(不受支持的媒體類型)狀態碼不正確),並且
請求實體的語法正確(因此為400(錯誤請求)
狀態代碼不正確),但無法處理其中的說明。 例如對於如果XML可能會出現此錯誤情況
請求主體包含格式正確的(即,語法正確的),但是
語義錯誤的XML指令。在RFC 723x中找不到422

源RFC 2616 源RFC 723x

422“不可處理的實體”更多地是關於語義錯誤的,URI不是請求實體的一部分,因此422不適用。

422的描述說,

422(不可處理實體)狀態代碼表示服務器了解請求實體的內容類型(因此415(不支持的媒體類型)狀態代碼不合適),並且請求實體的語法正確(因此400(錯誤請求) )狀態代碼不合適),但無法處理其中的說明。

相反,我認為這里有400個代碼更適合。

因此,可能有人認為它不適合語義錯誤。 但是沒有更多了。 自2014年6月起,相關標准RFC 7231(取代了先前的RFC2616)更廣泛地使用了400(錯誤請求),因為服務器由於某些原因(可能是客戶端錯誤)而無法處理該請求,或將不再處理該請求

422無法處理的實體可以用於任何類型的請求。 它不是特定於GET或POST或DDELETE。 如果必須驗證可以接受為請求的任何數據,並且必須驗證任何前提條件,則可以引發HTTP 422。

例如。 GET調用中存在路徑參數,即您所經過的年齡,在語法上是正確的,例如16,但是對於18歲以上的您的業務邏輯,因此在此處拋出400是不正確的。

參考: https : //www.restapitutorial.com/httpstatuscodes.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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