南昌哪里有建设网站的,全国旅游景点网站开源,建筑公司企业信用分在哪里查,asp.net 开发的网站# 前言*****### 在使用Thinkphp接口开发项目的程中可能会遇到这样的场景 准备将原有系统重构一遍#xff0c;但是出于某种原因#xff0c;老的系统在未来一段时间内必须和新的版本共存#xff1b; APP存在老版本不能强制升级#xff0c;所以服务端接口需要同时兼容新老客户…# 前言*****### 在使用Thinkphp接口开发项目的程中可能会遇到这样的场景 准备将原有系统重构一遍但是出于某种原因老的系统在未来一段时间内必须和新的版本共存 APP存在老版本不能强制升级所以服务端接口需要同时兼容新老客户端同时正常使用 其他更多需要新老兼容的场景如果只是在一套接口中做特殊判断将会变得非常难维护。所以更好的方法是进行版本管理。本文主要分享通过URL路由方式来达到版本控制。在实际的开发中不同的版本方法名基本上都是一样的。以用户注册接口为例方法名都是 register[success] 两个版本通过以下url访问URL格式域名/模块名/版本号/控制器/方法名v1版本http://www.tp5.com/api/v1/user/registerv2版本http://www.tp5.com/api/v2/user/register首先我们在route.php文件中定义好路由规则phpreturn [api/:version/:controller/:function api/:version.:controller/:function,];接下来看一下目录结构其中 application/api/controller/v1/User.php 中文件代码如下phpnamespace app\api\controller\v1;class User{public function register(){dump(我是v1版本的register方法);}}其中 application/api/controller/v2/User.php 中文件代码如下phpnamespace 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### v2版本http://www.tp5.com/api/v2/user/register至此已经完成了最简单的通过thinkphp5路由规则实现API的版本控制是不是非常简单呢 其他API版本控制的思路 通过域名路由 v1.api.tp5.com v2.api.tp5.com 在route.php中获取对应版本标识并路由到应控制器文件中 在header中传入version参数并route.php中获取对应值再路由对应控制器文件中 直接将版本号作为参数传入进行路由~实际上thinkphp的路由规则远比想象的要强大灵活很多建议多阅读官方ThinkPHP5.1完全开发手册之路由篇 https://www.kancloud.cn/manual/thinkphp5_1/353960 希望大家可以结合自己的业务场景充分利用路由的功能让URL更规范以及优雅也可隐式传入额外请求参数让自己的系统更加安全优雅## 开发帮助及交流如您对本文感兴趣想与我联系交流 您可以 邮件至xieyongfaecarde.cn QQ2392523899 [点我聊天](http://wpa.qq.com/msgrd?v3uin2392523899siteqqmenuyesfrommessageisappinstalled0) 微信交流