1

在 REST API 中,我正在检查对带有接受标头的版本 API 的推荐:

Accept: application/vnd.com.myservice.v2+json

现在,服务器可以提取此信息并发送 v2 响应。为什么我们在接受标头中发送 vnd.com.myservice.v2 我们应该只发送 Accept: application/json?为什么我们不应该为此创建单独的标题?

4

1 回答 1

1

Accept是标准标头,用于媒体类型协商。媒体类型决定了资源如何通过网络表示。最终,这就是API 版本——只是资源的表示。

Accept还具有自定义标头没有的其他有用语义。例如,Accept允许多种质量(例如加权)媒体类型。客户可以要求:

accept: application/vnd.com.myservice.v2+json;q=0.8, application/vnd.com.myservice.v1+json

这向服务器表明客户端更喜欢具有 80% 权重的 JSON 格式的 V2。如果它不可用,那么客户端也将接受 V1。

媒体类型也可以使用自定义参数。以下也是有效的:

accept: application/json;q=0.8;v=2.0, application/json;v=1.0

这说明了同样的事情,但使用带有自定义参数的标准媒体类型而不是自定义媒体类型。这种方法更通用,通常更容易在 Web 堆栈中使用(根据我的经验)。

我希望这会有所帮助。

于 2018-03-26T02:35:35.910 回答