【问题标题】:REST API: Using content type vs custom param or endpointREST API:使用内容类型与自定义参数或端点
【发布时间】:2014-11-16 17:02:08
【问题描述】:

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

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

第三个选项是使用 content-type 来允许客户端声明替代的响应正文格式。这看起来如何? (应用程序/json+摘要)?有没有这样做的好例子?

还有其他选择吗?

【问题讨论】:

    标签: api rest resources


    【解决方案1】:

    使用 Accept/Content-Type 标头的第三个选项允许媒体类型作为数据的表示,与数据本身分开。

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

    它使用 http 标头来允许客户端选择数据的格式以及版本。因此,在您的情况下,请求可能类似于:

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

    响应将包含您的简化数据格式的正文和设置为 application/summary+json 的 Content-Type 标头

    如果您想更加迂腐,也可以使用供应商媒体类型 application/vnd.yourcompany.summary+json。在这种情况下,vnd 意味着媒体类型是 vendor,通常与特定于应用程序的媒体类型相关联。

    更多信息:

    【讨论】:

      猜你喜欢
      • 2020-02-06
      • 1970-01-01
      • 2019-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-08
      • 2012-02-28
      • 1970-01-01
      相关资源
      最近更新 更多