当前位置: 首页 > 后端技术 > PHP

Yii2.0RESTfulAPI的版本控制

时间:2023-03-29 21:55:31 PHP

Yii2.0RESTfulAPI的版本控制之前写了两篇关于如何搭建Yii2.0RESTfulAPI,以及鉴权等处理的文章,但是没有涉及到版本管理,下面说说今天就来说说版本管理是如何实现的。简单的从头开始,一步步搭建,但是有些概念和使用本文就不一一解释了,可以参考第一篇Yii2.0RESTfulAPI基础配置教程通过Composer安装配置安装Yii2.0这是安装Yii2.0的首选方法。如果您没有安装Composer,您可以按照此处的说明进行安装。安装Composer后,运行以下命令安装ComposerAsset插件:composerglobalrequire"fxp/composer-asset-plugin:^1.2.0"要安装高级应用程序模板,运行以下命令:composercreate-projectyiisoft/yii2-app-advancedyii-api2.0.14复制后端目录,命名为api打开api\config\main.php修改id,controllerNamespace:return['id'=>'app-api','basePath'=>dirname(['enablePrettyUrl'=>true,'showScriptName'=>false,'rules'=>[]],打开common\config\bootstrap.php添加以下别名Yii::setAlias('@api',dirname(dirname(__DIR__)).'/api');好了,上面的工作就完成了,下面进入正题,更多关于版本的信息可以参考权威指南,我就不过多解释了这里就不多说了(PS:主要是不会。。。)我的理解:Yii2的版本可以理解为不同的模块,每个版本都是一个新的模块,比如常见的v1、v2等。模块构建关于如何生成模块,我们可以使用GII来生成。配置GII打开api/config/main-local.php文件修改如下:if(!YII_ENV_TEST){//'dev'环境配置调整$config['bootstrap'][]='debug';$config['modules']['debug']=['class'=>'yii\debug\Module',];$config['bootstrap'][]='gii';$config['modules']['gii']=['class'=>'yii\gii\Module','allowedIPs'=>['127.0.0.1','*']];}因为我在用Homestead,默认不允许访问GII,所以我要加上'allowedIPs'=>['127.0.0.1','*'],否则会出现Forbidden(#403),大家可以根据自己的Configure根据自己的需要,或者不配置生成Modules在浏览器中输入http://yourhost/gii,可以看到ModuleGenerator,点击StartModulesClass输入:api\modules\v1\ModuleModuleID,输入v1,(一般会自动进入)点击Preview最后点击Generate生成配置模块打开api/config/main.php文件修改modules'modules'=>['v1'=>['class'=>'api\modules\v1\Module',]],然后修改urlManager'urlManager'=>['enablePrettyUrl'=>true,'enableStrictParsing'=>true,'showScriptName'=>false,'rules'=>[['class'=>'yii\rest\UrlRule','controller'=>'v1/default','extraPatterns'=>['GETindex'=>'index',],],],]基于以上,Yii2.0RESTFulAPI实现了版本管理,我们可以通过以下地址访问:http://localhost/v1/defaults说多了,地址上面已经映射到api/web目录,请根据自己的实际情况进行配置打开新生成的modules文件目录,可以看到里面有一个v1目录,可以看到这个目录下有一个controllers,还有一个views目录,我们刚才访问的defaults其实就是这两个文件。控制器像传统的Web项目一样呈现视图。你可能知道我们以后的controller代码会放在modules/v1/controllers。刚才默认的GII是我们生成的代码,因为我们是API,所以views目录,我们一般不用新建一个restcontroller,在modules\v1\controllers['enablePrettyUrl'=>true,'enableStrictParsing'=>true,'showScriptName'=>false,'rules'=>[['class'=>'yii\rest\UrlRule','controller'=>'v1/default','extraPatterns'=>['GETindex'=>'index',],],['class'=>'yii\rest\UrlRule','controller'=>'v1/user','extraPatterns'=>['GETindex'=>'index',],],],]尝试访问http://localhost/v1/users/indexok,上面是Yii2.0版本管理格式化响应修改api/config/main.php的实现将响应添加到组件数组'response'=>['class'=>'yii\web\Response','onbeforeSend'=>function($event){$response=$event->sender;$response->data=['success'=>$response->isSuccessful,'code'=>$response->getStatusCode(),'message'=>$response->statusText,'data'=>$response->数据,];$response->statusCode=200;},],至此我已经完成了3篇关于Yii2.0RESTFulAPI的文章,分别是:Yii2.0RESTfulAPI基础配置教程Yii2.0RESTfulAPI认证教程Yii2.0RESTfulAPI版本控制写的确实不是很好。看完有什么收获,不妨留言评论,或者觉得文中有问题,有不懂的地方也可以留言。我们可以一起讨论学习