2013-10-31 26 views
0

我正在用Symfony2構建一個RESTful服務。構建RESTful服務以在未找到結果時進行響應

它有一個搜索函數返回一個搜索實體,該實體有一個結果數組。

如果用戶執行不正確的搜索,則可能需要發送幾條不同的消息來發送它們。因此,我對如何構建響應思想是:

對於一個好的搜索:

{ 
    "message": "OK", 
    "search": <insert search object here> 
} 

和一個壞的搜索:

{ 
    "message: "Please double check your search in such and such fashion" 
} 

從本質上講,總是發送一個「消息」,但並不總是發送搜索實體,因爲如果他們的搜索以某種方式失敗,就不會創建搜索實體。

然後,即使他們的搜索條件已關閉,我也將始終返回200響應。或者,如果沒有結果。

這是否與REST背後的思想一致?還是應該將響應更改爲404或其他?

謝謝!

回答

2

我認爲這取決於您希望如何構建您的RESTful服務。當你說如果用戶對我進行了一個不正當的搜索,那聽起來好像用戶在搜索中使用了錯誤的語法或者做了其他錯誤的事情,而不是正確格式化的搜索,它只是返回沒有結果。

如果是這種情況,我認爲大多數REST服務返回400 - 錯誤的請求,或400範圍內的其他錯誤代碼。

此外,我認爲大多數REST服務會返回響應正文中的搜索實體。

+0

在我的情況下,這實際上是一個圖像搜索。用戶可以上傳圖片,並且可能不符合我們的搜索條件。這並不像他們忘了上傳圖片,他們只是包含了一個,由於各種原因,我們無法操作。所以,這有點模糊。不知道這是否會改變你的迴應 - – Pez

+0

只是爲了跟進,經過多一點研究後,我跟着你的建議去了。當他們不上傳圖片或上傳不可接受的圖片時,我會返回400狀態碼。我不是經常在響應正文中返回「消息」,而是將此消息作爲X-Status-Reason添加到響應頭中。 – Pez

+0

是的,這是有道理的,我相信這就是大多數REST服務的做法。 – Ergin

相關問題