0

假设我有一个类似的 API:/api/v1//modify?txtUri={a-text-file-uri-goes-here}它过滤和修改位于给定 URI 的给定文本文件,并根据一些内部业务规则在有效负载响应中返回过滤后的文本文件。

起初我只想返回 JSON,但我想允许不同的返回格式。

是否更好(即最标准的方式):

  • 使用不同的资源:

    • /api/v1/modify?txtUri={a-text-file-uri-goes-here}/json
    • /api/v1/modify?txtUri={a-text-file-uri-goes-here}/xml返回
    • /api/v1/modify?txtUri={a-text-file-uri-goes-here}默认回退,返回 json
  • 添加另一个可选的查询字符串参数format

    • /api/v1/modify?txtUri={a-text-file-uri-goes-here}?format=json返回json格式
    • /api/v1/modify?txtUri={a-text-file-uri-goes-here}?format=xml返回 xml 格式
    • /api/v1/modify?txtUri={a-text-file-uri-goes-here}默认回退,return 返回 json
  • 设置 Accept http 标头:https ://developer.mozilla.org/fr/docs/Web/HTTP/Headers/Accept以及我们想要获取的返回格式,如果未设置,则返回 406 http 代码。

4

1 回答 1

2

使用 Accept 标头,因为 REST API 是 HTTP,它是 HTTP 的工作方式。这也是您的 API 用户所期望的。

如果您不想使用接受标头,绝对不要使用 QueryString - 您可以在 aa push 中使用扩展名,例如 /api/v1/modify.json?txtUri={a-text-file-uri-goes-这里} Twitter 这样做,但我更喜欢 Accept 标头。

于 2018-11-03T13:06:58.447 回答