REST:为什么带有头文件的版本使用vnd而没有为版本控制添加新头文件?

时间:2017-06-14 21:07:37

标签: rest asp.net-web-api api-versioning

在REST API中,我正在检查推荐到版本API,接受标头为:

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

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

1 个答案:

答案 0 :(得分: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堆栈中使用(根据我的经验)。

我希望有所帮助。