在REST API中,我正在检查推荐到版本API,接受标头为:
Accept: application/vnd.com.myservice.v2+json
现在,服务器可以提取此信息并发送v2响应。为什么我们要在接受标头中发送vnd.com.myservice.v2,我们只应该发送Accept:application / json?为什么我们不应该为此创建单独的标题?
答案 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堆栈中使用(根据我的经验)。
我希望有所帮助。