我們有一個RESTful體系結構,我有一個關於API異常和http狀態的問題。REST的4xx http狀態碼
我們使用400
病例:
- 值不匹配(例如,預期的100卻被99)
- 侵犯@Size,@Min,@Max,@Nullable ANC等
對於邏輯錯誤的情況,使用422
(不可處理的實體),但這不是客戶端錯誤。例如,嘗試將類別設置爲已有產品的類別。這在客戶端是不可預測的。
最後,我們使用409
(衝突)作爲客戶端錯誤的情況。 例如,如果他試圖通過JSON
發送無效的Date
格式。或者註冊日期比目前更遠。
但是有一種情況適合於幾個類別: 我們有一個Tax
字段,它是整數。
如果客戶端發送分數Tax
則應引發異常。
從一方面來說,這顯然是400
,客戶應該看到'稅不能小數'。
但是,從另一面 - 它是一個客戶端的編程錯誤,因爲他正試圖發送雙/浮法的代替整數/長(即他向另一個類型,它像通過長而不是字符串)和409應拋出。
我應該選擇什麼:400
或409
爲TypeMismatch
在Numbers
是什麼情況? 如果400
,爲什麼我應該爲數字類型製作一個遊戲,但是409
爲Date/String
例TypeMismatch
?
我寧願選擇確定的邏輯而不是「我認爲」的答案。這不是一個討論。
我聞到的意見爲主的問題,所以無論你選擇做什麼,只是保持一致。 – Kayaman
我對此的看法是堅持使用http響應的基於標準的定義。 – YvesLeBorg
親愛的選民:這個問題不是基於意見的。 HTTP響應已被充分描述以產生明確的答案。 –