API版本控制的方式有哪些

发布时间:2021-07-05 18:42:13 作者:chen
来源:亿速云 阅读:196

这篇文章主要介绍“API版本控制的方式有哪些”,在日常操作中,相信很多人在API版本控制的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”API版本控制的方式有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

通过子域名(或子目录)

第一个办法,是直接使用两个模块(或者应用)来实现,对于架构改变比较大的API版本(尤其是不同版本之间基本没法共用、更改框架甚至采用不同的语言实现)通常会这样选择。

目录结构如下:

api
├─application           
│  ├─v1  
│  │  ├─controller 
│  │  ├─model 
│  │  ├─config
│  │  └─ ...            
│  ├─v2
│  │  ├─controller
│  │  ├─model           
│  │  ├─config  
│  │  └─ ...     
│   ...

请求方式

GET https://api.tp5.com/v1/user/1
GET https://api.tp5.com/v2/user/1

当然,你也可以通过子域名绑定模块实现下面的方式访问

GET https://v1.api.tp5.com/user/1
GET https://v2.api.tp5.com/user/1

通过请求参数

对于刚开始没有做好版本规划,后期迭代维护过程中增加了新的版本,考虑到架构的改造成本,可能会考虑下面的方式:

GET https://api.tp5.com/user/1
GET https://api.tp5.com/user/1?version=v2

由于缺乏很好的路径和类库目录规范,如果频繁更新版本的话,建议把版本的架构设计升级成后面的两种方式。

通过路由

可能大多数接口在设计的时候已经考虑到了版本控制的问题,那么通常会选择在URL地址中增加版本标识参数,这种方式便于调试。

对于API应用来说,更建议采用单模块设计+多级控制器,目录结构如下:

api
├─application          
│  ├─controller
│  │  ├─v1
│  │  ├─v2
│  │  └─ ...            
│  ├─model
│   ...

路由规则定义如下:

Route::get(':version/user/:id',':version.User/read');
GET https://api.tp5.com/v1/user/1
GET https://api.tp5.com/v2/user/1

由于使用了多级控制器,需要注意控制器的命名空间。

通过命令行可以快速的创建控制器文件:

php think make:controller v1/User

通过头信息

最新的规范趋向于通过头信息来定义版本,优势在于从历史版本迭代更新的时候不需要改变URL地址,改变请求头信息即可,主要分为两种。

第一种是使用自定义请求头例如api-version控制版本(同理你还可以用其它头信息控制其它)

GET https://api.tp5.com/user/1
api-version:v2

头信息的方式,路由规则的定义略微做下调整即可:

use think\facade\Request;
use think\facade\Route;

$version = Request::header('api-version') ? : 'v1';
Route::get('user/:id', $version . '.User/read');

也有很多采用了Accept头信息来处理(好处是可以设置接口输出格式),通常的规范是

GET https://api.tp5.com/user/1
Accept: application/vnd.tp5.v2+json

总结

对于API接口开发,尽量事先做好版本控制规划,确保你的应用能兼容新老版本的访问。

我的小结:

版本号通过header中的api-version参数传递,然后通过路由来控制访问到具体的控制器和方法

以下是我自己配置的路由:

API版本控制的方式有哪些

注意配置路由的时候,“.”分割表示目录名

表示当请求api/任意控制器名/任意方法名时,会访问api/版本目录/任意控制器名/任意方法名

具体的路由规则还是要看官方文档

到此,关于“API版本控制的方式有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

推荐阅读:
  1. 分布式版本控制Git的优点有哪些
  2. 常用的版本控制系统有哪些

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

api

上一篇:如何利用 cgroup 的 cpuset 控制器限制进程的 CPU 使用

下一篇:springboot使用thymeleaf怎么引用公共部分html

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》