Web API 版本控制的几种方式

原创 2014年03月05日 20:28:32

http://www.troyhunt.com/2014/02/your-api-versioning-is-wrong-which-is.html

这篇文章写得很好,介绍了三种实现web api版本化的三种方式。我从评论里又收集到两种方式,所以一共是5种:

方式一:利用URL

HTTP GET:
https://haveibeenpwned.com/api/v2/breachedaccount/foo


方式二:利用用户自定义的request header

HTTP GET:
https://haveibeenpwned.com/api/breachedaccount/foo
api-version: 2


方式三:利用content type

HTTP GET:
https://haveibeenpwned.com/api/breachedaccount/foo
Accept: application/vnd.haveibeenpwned.v2+json


方式四:利用content type

HTTP GET:
https://haveibeenpwned.com/api/breachedaccount/foo
Accept: application/vnd.haveibeenpwned+json; version=2.0

这个方式和方式三的小不同的地方是,把版本号分离出来了。


方式五:利用URL里的parameter

HTTP GET:
https://haveibeenpwned.com/api/breachedaccount/foo?v=2

作者说他最喜欢第三种方式,因为

  1. URL不用改变
  2. 客户端应该通过accept header来表明自己想接收的是什么样的数据。
但作者很蛋疼地在他的网站上把前面三种方式都实现了,而且都支持。
https://haveibeenpwned.com/API/v2


我个人最喜欢的是第二种方式,因为这个用spring mvc实现最容易,也最简洁。

因为只要在Controler上用@RequestMapping标明版本即可。不用再去各种匹配,各种识别。

如果是自己写一个Annotation来识别的话,也要花些功夫,而且怎么无缝地转发到原有的Spring mvc的配置也是个问题。

@Controller
@RequestMapping(headers="apt-version=2")
public class TestControllerV2 {
}


另外这个网站列举了很多国外的有名网站是如何实现web api版本控制的。

http://www.lexicalscope.com/blog/2012/03/12/how-are-rest-apis-versioned/

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

RESTful之API版本控制

在日常移动端开发中,随着业务需求的不断变化,我们的接口返回的数据就会有各种变动,但由于native语言开发的应用无法动态更新api,在修改接口返回数据改变接口逻辑的同时还要确保旧版本的兼容,因此就用到...

SpingMVC框架实现restfull接口的版本控制

互联网发展到今天,基于restfull开发的系统也越来越多,不再局限于jsp等脚本语言来实现动态数据的展示,而是通过后台提供的http接口给前端调用,但是当系统越做越大,同一个接口可能会不断的修改,一...

API开发的版本控制技巧

《API开发的版本控制技巧》作者:chszs,转载需注明。博客主页:http://blog.csdn.net/chszs在设计和构建API时,API的版本控制是非常重要的。必须确保新API对于现有的A...
  • chszs
  • chszs
  • 2015年01月16日 16:45
  • 8043

APP的接口版本管理 实现多版本共存

思路:用户请求url ---> 拦截器拦截 ---> 转发到真正处理类和方法 ---> 返回结果 url注解类 package com.jc.app.util.apiVersion; impor...
  • zsr251
  • zsr251
  • 2016年12月01日 11:15
  • 2764

用产品思维设计API(三)——版本控制,没有你想的这么简单

用产品思维设计API(三)——版本控制,没有你想的这么简单前言 最近公司内部在重构项目代码,包括API方向的重构,期间遇到了很多的问题,不由得让我重新思考了下。 - 一个优雅的API该如何设...
  • yzzst
  • yzzst
  • 2017年01月27日 12:46
  • 2290

Asp.net WebApi版本控制

关web api的版本控制网上有很多,如Web API 版本控制的几种方式  Web API 版本化的介绍 但是具体的code并不多,或者说可以run的demo 不多。 版本控制...
  • dz45693
  • dz45693
  • 2016年04月09日 18:28
  • 3063

APP API需要同时维护多个版本如何优雅的设计?

APP API需要同时维护多个版本如何优雅的设计? 第一种形式: Controller/V1.0.0/ -----------------/UserControlle...

APP API需要同时维护多个版本如何优雅的设计?

APP API需要同时维护多个版本如何优雅的设计? 第一种形式: Controller/V1.0.0/ -----------------/UserController.php ...
  • cyjch
  • cyjch
  • 2016年06月06日 17:39
  • 1851

关于APP接口设计

最近一段时间一直在做APP接口,总结一下APP接口开发过程中的注意事项: 1、效率:接口访问速度 APP有别于WEB服务,对服务器端要求是比较严格的,在移动端有限的带宽条件下,要求接口响应...

Android版本和API Level对应关系

Platform Version API Level VERSION_CODE Notes Android 4.4 19 KITKAT Platfor...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Web API 版本控制的几种方式
举报原因:
原因补充:

(最多只允许输入30个字)