我正在设计一个资源的列表端点,该资源既可以使用名为/ transactions的资源的完整版和轻量版。默认情况下,响应将包括完整资源,但还需要为客户端提供资源列表的“简化”版本。
第一个选项是使用自定义参数(例如/ transactions?summary = true) 第二种选择是使用自定义端点,但不是非常RESTful(例如/ transactions / summary)
第三种选择是使用content-type来允许客户端声明备用响应体格式。这看起来怎么样? (应用/ JSON +摘要)?这有什么好的例子吗?
还会想到其他任何选项吗?
答案 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,通常与应用程序特定的媒体类型相关联。
更多信息: