2014-09-22 62 views
0

我正在設計一個資源的列表端點,這個資源可以稱爲/ transactions的資源的完整版本和簡化版本。默認情況下,響應將包含完整資源,但也需要爲客戶提供資源列表的「簡化」版本。REST API:使用內容類型vs自定義參數或端點

第一種選擇是使用自定義的參數(如/交易?總結= TRUE) 第二個選擇是使用自定義的終點,雖然不是很REST風格(如/交易/摘要)

第三選項是使用content-type來允許客戶聲明備選響應主體格式。這看起來如何? (應用/ JSON +摘要)?有沒有這方面的好例子?

想到其他選項嗎?

回答

2

使用Accept/Content-Type標頭的第三個選項允許媒體類型成爲與數據本身分開的數據表示。

的一個很好的例子是GitHub的API:https://developer.github.com/v3/media/

它使用HTTP標頭允許客戶選擇的數據格式,以及版本。所以你的情況,請求可能類似於:

curl http://api.host.com/transactions -H "Accept: application/summary+json"

和響應將包含您簡化數據格式的主體和Content-Type頭設置爲application/summary+json

如果你想對它更迂腐,你也可以使用供應商媒體類型application/vnd.yourcompany.summary+json。在這種情況下,vnd意味着媒體類型是vendor,通常與特定於應用程序的媒體類型相關聯。

更多信息: