为版本化REST API创建我自己的自定义标头

时间:2013-06-24 19:24:02

标签: api rest header

我正在重新设计我的上个世纪的应用程序(这很好用,请注意),并且开始新鲜的机会让我调查了几个方面。这个问题很重要。版本

该应用程序实际上是提供资源的数据应用程序集合 - 查询是http,响应是JSON。现在我想改变其中一个回复。阅读后,我决定通过URI或query_string实现版本控制。相反,正如Best practices for API versioning?中所建议的那样,尤其是第二个答案(Stackoverflow上没有一种方法可以链接到特定的答案吗?),我正在使用标题。但是,我没有使用Accept: application/vnd.company.myapp.customer-v3+json我正在使用

Accept: application/json
X-Requested-With:   XMLHttpRequest
X-Version:  2

在服务器端,我可以检查X-Version的值。如果它不存在,则查询使用最新的API。它X-Version确实存在,然后使用请求版本。以上工作正常。

我的问题是 - 我应该注意哪些问题? ESP。因为我从我的屁股中取出了X-Version。据我所知,这不是官方认可的标题。

更新: Drats!甚至在发布之前我就读过Custom HTTP headers : naming conventions,似乎我不应该使用X-前缀。然而,除非我先做尽职调查,否则我的本土标题有可能与现有标准冲突。想法?

2 个答案:

答案 0 :(得分:0)

围绕“正确”的方式进行辩论存在很多。对于一些高级别的想法,请查看mnot的:WEB API VERSIONING SMACKDOWN

要进行非常深入的讨论,请查看此帖子到API-Craft:https://groups.google.com/forum/#!topic/api-craft/E8MBkzirdcw

就个人而言,我赞成媒体类型版本控制和链接关系版本控制的组合来实现这一目标。

答案 1 :(得分:0)

我更喜欢自定义标头,尤其是在具有微服务和应用程序版本之间的流量管理的反向代理的当前趋势下。

X-App: <app_name>:<app_version>