我想知道如何在我的REST API中響應。瞭解REST響應和HTTP狀態代碼
有效實施例:
http://blah.com/api/v1/dosomething/123
上面是一個有效的請求和目前我有200與JSON響應一個HTTP狀態
{
"dosomething": {
"status": "OK",
"results": "123"
}
}
現在的問題是,如果傳遞的參數爲無效(我期待一串整數),我是否返回200的HTTP響應並將錯誤狀態返回到JSON響應中,或者我應該傳遞類似HTTP 400響應(錯誤的請求)並列出錯誤/ JSON響應中的請求問題?
錯誤示例:
http://blah.com/api/v1/dosomething/123a
JSON響應:
{
"dosomething": {
"status": "ERROR",
"errors": [
"Value passed: |123a| must be a integer."
]
}
}
再次我的問題是,我應該轉嫁請求200或400 HTTP狀態,其中傳遞的參數是不是我有什麼期待?或者應該在請求正在工作時總是200響應?
什麼被認爲是最佳實踐?
這是一個常見的誤區。400是客戶端應用程序錯誤,因此它可以代表失敗的案例的整個範圍。最新Httpbis規範改變了400錯誤的措辭,以顯示它可以更廣泛地應用http://tools.ietf.org/html/draft-ietf-httpbis-p2-semantics-19#section-7.4.1 –