2014-02-13 56 views
0

我在API的限制,其中允許每頁itens的最大數量爲50正確的HTTP狀態代碼每頁itens的人數超過+分頁偏移

什麼是正確的HTTP代碼返回給消費者例如,如果他把51放在哪裏?

我想在HTTP 400(錯誤請求),因爲消費者「知道」(總部設在API約定),最大爲50。在這種情況下,我也將返回描述錯誤的響應。

分頁的問題。如果我有20行/對象,並且API使用者在偏移參數中放置了21,我應該返回總數爲0的HTTP 200嗎?

回答

0

它必須是4xx狀態碼之一,因爲服務器不僅能夠提供更多而且沒有任何故障,所以這是一個客戶端錯誤。

400錯誤的請求不太適合我,因爲沒有「錯誤」每本身,你只是要求超過允許更多,但以正確的方式。

我想選擇405方法不允許(請求是使用資源不支持的請求方法的資源)。

雖然它很模糊,並且根據狀態代碼沒有任何反應。我假設消費者會設置它,意識到它不起作用,請檢查返回的內容並查看錯誤消息,說明請求的行數太多(最多50個)。

我不會再回到200,暗示沒有可拿的物品,它不會對他們的一部分提出一個錯誤。

+0

我在未在特定的資源支持的操作使用HTTP 405。 我認爲在這種情況下,HTTP 405並不是代表不同情況的最佳狀態代碼,但我同意你的看法:「你只是要求超出允許範圍,但以正確的方式。」 關於200狀態代碼,我再次同意你的意見:) – Krock

+0

下面是代碼及其含義的列表,請仔細閱讀這些代碼,看看是否有什麼突出的更適合你的情況:http:// en。 wikipedia.org/wiki/List_of_HTTP_status_codes#4xx_Client_Error –

+0

絕對不是405 imo:405是用於當您嘗試時,例如,將PUT分配給不接受PUT的資源。 「* Method * Not Allowed」中的方法與https方法(POST,GET,PUT,PATCH,DELETE等)有關。 – yar1

3

這絕對屬於4XX類別的HTTP響應。

對於第一種方案:

我覺得這個用例後適當的狀態是400 BAD REQUEST,基於HTTP規範(http://tools.ietf.org/html/rfc7231#section-6.5.1

6.5.1。 400錯誤的請求

400(錯誤請求)狀態代碼表示該服務器不能 或不會請求過程中由於一些被感知 是一個客戶端錯誤(例如,惡意請求語法,無效 請求消息成幀或欺騙性請求路由)。

用戶「知道」API不會接受> 50,並且服務器將/會嘗試執行符合API規則的另一個請求。

對於第二種情況:

我不知道如果正確理解。

200 OK是正確的,如果您的API顯示了所有20行/對象而不是默默地說,成功申請並沒有對象了!

但是:

你可能會考慮404 Not Found根據您的業務規則,如果 21不存在。

從RFC7231 :

404(未找到)狀態代碼表示原始服務器並 找不到目標資源的電流表示或不 不願意透露一個存在。


也許你能解釋更多的第二個方案,我會相應地編輯響應:)