我正在重新设计我的上个世纪的应用程序(这很好用,请注意),并且开始新鲜的机会让我调查了几个方面。这个问题很重要。版本
该应用程序实际上是提供资源的数据应用程序集合 - 查询是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-
前缀。然而,除非我先做尽职调查,否则我的本土标题有可能与现有标准冲突。想法?
答案 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>