我對何時在任何休息 api 中回傳 400 Http 代碼有一些疑問。我解釋接下來的三種情況:
- 當某些引數值不符合要求時,例如字串的長度或數字的范圍,我將回傳 400
- 當用戶想在我們的系統中但在它之前執行一些“動作”時,我們應用一些業務邏輯來驗證這個請求,如果它有效我們執行那個動作,如果驗證是 KO,我們應該回傳 400 嗎?我會
- 最后一個對我來說更令人困惑的是,如果我們公開一些 rest 方法呼叫,它的目的只是用業務邏輯規則驗證某些東西,例如我們公開一個方法,以便客戶可以呼叫我們來驗證購物有些專案,如果有任何業務驗證規則沒有通過,我們應該在這種情況下回傳 400 嗎?我想我不會,因為此請求的最終目標是驗證某些內容,并且已成功執行,盡管在驗證程序中某些業務驗證規則未通過。
你同意?謝謝
uj5u.com熱心網友回復:
對于 1) 和 2) 應回傳 400 http 狀態代碼。
對于 3) 它取決于業務驗證規則。如果是由于用戶權限,403 將是正確的 http 狀態代碼。如果某些事情是由于資源不存在(不再存在)造成的,則 404 將是要選擇的狀態代碼。此外,409 是一個狀態代碼,在許多業務規則場景中都很有用。在任何其他 4xx 狀態代碼似乎沒有縮進的情況下,請使用 400。
在此處查看 http 狀態代碼的完整串列及其說明:https : //datatracker.ietf.org/doc/html/rfc7231#section-6.5
uj5u.com熱心網友回復:
基本原理是每當客戶端的請求不符合預期(缺少強制引數、格式錯誤等)時,回傳一個 400 HTTP 狀態碼。
因此,對于情況 1),您應該回傳 400。
對于情況 2) 和 3),這取決于具體的驗證規則。例如,如果您的驗證規則是關于請求內容的結構或值或客戶端可以修復的其他內容,那么您可以回傳 400。
如果驗證規則涉及授權背景關系的某種方式,則應該使用 401、403 甚至 404。有關詳細資訊,請查看這篇文章:https : //auth0.com/blog/forbidden-unauthorized-http-status-代碼/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/390005.html
標籤:休息 http-status-code-400 错误的请求
