php+tp框架+API,【路由】利用Thinkphp路由实现API开发版本管理

# 前言

*****

### 在使用Thinkphp接口开发项目的程中可能会遇到这样的场景

+ 准备将原有系统重构一遍,但是出于某种原因,老的系统在未来一段时间内必须和新的版本共存;

+ APP存在老版本不能强制升级,所以服务端接口需要同时兼容新老客户端同时正常使用;

+ 其他更多需要新老兼容的场景

如果只是在一套接口中做特殊判断,将会变得非常难维护。所以更好的方法是进行版本管理。本文主要分享通过URL路由方式来达到版本控制。

在实际的开发中不同的版本方法名基本上都是一样的。以用户注册接口为例,

方法名都是: register

>[success] 两个版本通过以下url访问,URL格式:域名/模块名/版本号/控制器/方法名

```

v1版本:http://www.tp5.com/api/v1/user/register

v2版本:http://www.tp5.com/api/v2/user/register

```

首先我们在route.php文件中定义好路由规则

```php

return [

'api/:version/:controller/:function' => 'api/:version.:controller/:function',

];

```

接下来看一下目录结构

![](https://box.kancloud.cn/e3687e23b9f58cc496be15ff58e96987_543x634.png)

其中 application/api/controller/v1/User.php 中文件代码如下

```php

namespace app\api\controller\v1;

class User

{

public function register()

{

dump('我是v1版本的register方法');

}

}

```

其中 application/api/controller/v2/User.php 中文件代码如下

```php

namespace app\api\controller\v2;

class User

{

public function register()

{

dump('我是v2版本的register方法');

}

}

```

## 接下来我们使用postman工具模拟请求 v1和v2版本的url

### v1版本http://www.tp5.com/api/v1/user/register

![](https://box.kancloud.cn/6d9bc1c61b16532c48f8f865ffd398d9_610x491.png)

### v2版本http://www.tp5.com/api/v2/user/register

![](https://box.kancloud.cn/0be6c461941242a784a137f978841395_545x505.png)

至此,已经完成了最简单的通过thinkphp5路由规则实现API的版本控制,是不是非常简单呢?

> 其他API版本控制的思路

+ 通过域名路由 v1.api.tp5.com v2.api.tp5.comroute.php中获取对应版本标识并路由到应控制器文件中

+ 在header中传入version参数,并route.php中获取对应值再路由对应控制器文件中

+ 直接将版本号作为参数传入进行路由~

实际上thinkphp的路由规则远比想象的要强大灵活很多,建议多阅读官方ThinkPHP5.1完全开发手册之路由篇 https://www.kancloud.cn/manual/thinkphp5_1/353960 ,希望大家可以结合自己的业务场景充分利用路由的功能让URL更规范以及优雅,也可隐式传入额外请求参数,让自己的系统更加安全,优雅!

## 开发帮助及交流

如您对本文感兴趣想与我联系交流 您可以

+ 邮件至:xieyongfa@ecarde.cn

+ QQ:2392523899 [点我聊天](http://wpa.qq.com/msgrd?v=3&uin=2392523899&site=qq&menu=yes&from=message&isappinstalled=0)

+ 微信交流

![](https://box.kancloud.cn/b74285a950ce81e3cb782f02eb118d59_752x974.jpg =300x389)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值