2012-08-30 28 views
0

對於所有這些REST的東西來說都很新穎。RESTful搜索。返回實際資源或URI?

我正在設計我的API,我不知道我應該從搜索查詢返回什麼。我假設我只是返回所有與查詢完全匹配的對象,但在閱讀了一段關於HATEOAS後,我想我應該返回一個URI列表,而不是?

我可以看到,這可以幫助緩存項目,但我擔心會有大量的後續多個HTTP請求所產生的開銷,以獲得實際的對象信息。

我誤會了嗎?返回對象實例還是URIs可以接受嗎?

回答

2

恕我直言,永遠記住「純REST」和「真實世界REST」是兩個完全不同的野獸是很重要的。

如何從第一個位置返回查詢中的URI列表?如果你返回例如application/json,這肯定不會告訴客戶端它應該如何解釋內容;因此,互動已經由帶外信息驅動(客戶神奇地知道在哪裏尋找它需要的數據)與HATEOAS衝突。

所以,回答你的問題:我覺得返回對象實例而不是URI是完全可以接受的 - 但要小心,因爲在一般情況下,這意味着你在生成所有這些數據而不知道客戶端是否要用它。這就是爲什麼你會經常看到一種混合方法:對象實例不是完整的對象(即服務器沒有返回的信息的一部分),但它們確實包含一個唯一的標識符,允許客戶端獲取如果它選擇了這個選擇的對象。

3

我會返回一個資源列表,其中包含有關這些資源的更多詳細信息的鏈接。

從問題的REST Web服務食譜2010 - Subbu Allamaraju

設計查詢的響應作爲一個集合 資源的表示。設置適當的到期緩存標頭。如果查詢 與任何資源不匹配,則返回一個空集合。