2017-07-17 28 views
1

我有一個搜索的REST端點。沒有結果的REST搜索的HTTP狀態碼

GET /person?firstname=john&name=smith

至於導致與HTTP狀態代碼200 OK集合返回:

[ 
    { 
     "id":11, 
     "firstname":"John", 
     "name":"Smith", 
     "birthday":"1996-03-08" 
    }, 
    { 
     "id":18, 
     "firstname":"John", 
     "name":"Smith", 
     "birthday":"1963-07-11" 
    } 
] 

什麼是對空搜索結果正確的HTTP狀態代碼和有效載荷?

  • HTTP狀態200 OK與空收集[]

  • HTTP狀態204 No Content與空收集[]

  • HTTP狀態204 No Content用空體

+0

我建議200因爲一個空的列表或項目列表是真的是一回事,一個只是一個特例。另外204意味着根本沒有內容,而「[]」仍然是一些內容。 –

+0

[HTTP 200或404 for empty list?]的可能重複?(https://stackoverflow.com/questions/30217761/http-200-or-404-for-empty-list) – CodeCaster

+0

https://stackoverflow.com/問題/ 13366730 /適當的休息響應爲空表,等等 – CodeCaster

回答

2

我會建議:

HTTP Status 200 OK with a empty collection [] 

的原因是,204表示沒有內容發送回,這是不是你打電話的結果是什麼。

在你的情況下,有東西要發回。這是一個Json結果,恰好由一個空集合組成。

UPDATE:

從HTTP協議定義:

10.2.5 204無內容:服務器已完成要求,但並沒有 需要返回一個實體主體,和可能想要返回更新的 元信息。

和:

204響應必須不包括消息正文,因而總是 由報頭字段之後的第一空行終止。

+0

_「沒有更多內容」_ - 需要引用。 – CodeCaster

+0

@CodeCaster:我添加了相關的段落。 – JuanR

+0

這並不是說204表示_no more_內容。 – CodeCaster

3

國際海事組織第一種情況:用空的收集[]

  • HTTP狀態200 OK然後,你不必檢查的204和使用什麼返回,這是一個空列表。

+1

你打我吧=)你的搜索沒有找到匹配的結果,但你仍然可以把結果看作是事實上匹配的結果。 – Justin

1

這是習慣問題在這裏,當你設計你的Web應用程序。 200空的收集確定將是我的路要走。因爲:

  • 它證明了你的API不會返回響應
  • 處理200將是對客戶端更容易,因爲我可以假設你正在使用Javascript,而其他響應代碼可能會引發你的錯誤工作