我正在創建一個RESTful API,它將處理大量的用戶交互,包括使用存儲的信用卡下訂單。對於一般不成功的請求(不是錯誤),適當的HTTP狀態碼響應是什麼?
如果訂單成功,我將返回200 OK,並且在訂單請求格式不正確或無效的情況下,我將返回400錯誤請求。但是,如果在訂單的實際處理過程中出現問題,我應該返回什麼?
- 客戶端向服務器發送用戶資源的POSTS命令。如果用戶不存在,則返回404 Not Found。
- 訂單格式和信息經過驗證。如果無效,則返回400錯誤請求。
- 訂單已處理。如果訂單成功,則會爲訂單返回201 Created。如果遇到意外錯誤,則返回500服務器錯誤。
最後一步是問題 - 如果訂單因任何其他原因未能完成,我將返回什麼?可能出現的情況可能包括:
- 產品已經賣完了
- 用戶最大訂單數量已達到上限
- 信用卡交易失敗(資金不足等)
這似乎並不像它適用於400或500.如果沒有更好的代碼,我可以將其視爲400 - 根據業務規則,請求無效。這似乎並不準確。
編輯:還找到相同主題的this existing discussion。所有的答案似乎都指向使用狀態代碼來處理這種違規行爲,並且在使用400,409或422擴展之間進行了一些討論。
我喜歡 '422無法處理的實體' 驗證錯誤。如果客戶需要根據回覆以編程方式作出不同的決定 – house9 2015-10-16 00:19:22