REST API:使用内容类型与自定义参数或端点

时间:2014-09-22 16:38:35

标签: api rest resources

我正在设计一个资源的列表端点,该资源既可以使用名为/ transactions的资源的完整版和轻量版。默认情况下,响应将包括完整资源,但还需要为客户端提供资源列表的“简化”版本。

第一个选项是使用自定义参数(例如/ transactions?summary = true) 第二种选择是使用自定义端点,但不是非常RESTful(例如/ transactions / summary)

第三种选择是使用content-type来允许客户端声明备用响应体格式。这看起来怎么样? (应用/ JSON +摘要)?这有什么好的例子吗?

还会想到其他任何选项吗?

1 个答案:

答案 0 :(得分: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,通常与应用程序特定的媒体类型相关联。

更多信息: