2014-09-22 21 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,通常与特定于应用程序的媒体类型相关联。

更多信息:

相关问题