2014-10-31 113 views
1

RESTful服務響應代碼我有2查詢參數RESTful服務,說paramOne & Paramtwo
可能的網址是的部分有效載荷

http://someApi/someResource?paramone=1&paramtwo=2
http://someApi/someResource?paramone=1
http://someApi/someResource?paramtwo=2

paramOne & Paramtwo是一對多。因此,第二條路線的結果將包含一組對象。現在,如果我們發送的參數無效,那麼服務將返回400 BAD REQUEST

這是我的問題。如果用戶通過提供一個有效的和其他無效的參數(如http://someApi/someResource?paramone=1&paramtwo=invalidData)來請求,那麼HTTP狀態代碼是什麼?這是一個BAD REQUEST?或者基於paramone的對象集合? (因爲paramone有效)

Robustness Principle:「保守你做的[發送],在接受的內容中保持自由。」,我期待收集並忽略無效的Paramtwo。並且,當涉及到DELETE操作時,這將刪除所有對象paramone。那麼這樣做還是應該是badrequest?



謝謝:)

回答

1

在REST的URI應被視爲一個原子標識符,包括查詢字符串。從理論上講,這意味着即使查詢字符串應用到的基本資源存在,您也應該返回404 Not Found。但是,我認爲大多數API更加務實,並且基於最小驚訝原則,傾向於返回400 Bad Request上的無效查詢字符串參數。如果這一貫被採用,那很好。

我認爲最好是拒絕整個請求,並明確指出錯誤並期望用戶糾正錯誤,而不是在用戶可能忽略錯誤的情況下取得部分成功。如果您希望請求部分成功,HTTP沒有這方面的標準,但如果您願意,您可以採用207 Multi-Status WebDAV響應。

+0

+1您的回答:) – Navaneeth 2014-10-31 13:58:07