Yii2.0RESTfulAPI的版本控制的介绍(代码示例)
内容导读
收集整理的这篇技术教程文章主要介绍了Yii2.0RESTfulAPI的版本控制的介绍(代码示例),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4107字,纯文字阅读大概需要6分钟。
内容图文
本篇文章给大家带来的内容是关于Yii2.0 RESTful API的版本控制的介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。之前我写过两篇关于 Yii2.0 RESTful API 如何搭建,以及 认证 等处理,但是没有涉及到版本管理,今天就来谈谈版本管理如何实现。
索性就从头开始一步一步搭建吧,但是关于一些概念以及使用本篇就不一一解释了,可以参考 第一篇 Yii2.0 RESTful API 基础配置教程 进行配置
安装Yii2.0
通过 Composer 安装
这是安装Yii2.0的首选方法。如果你还没有安装 Composer,你可以按照这里的说明进行安装。
安装完 Composer,运行下面的命令来安装 Composer Asset 插件:
composer global require "fxp/composer-asset-plugin:^1.2.0"
安装高级的应用程序模板,运行下面的命令:
composer create-project yiisoft/yii2-app-advanced yii-api 2.0.14
拷贝backend目录,命名为api
打开apiconfigmain.php 修改id,controllerNamespace:
return [ 'id' => 'app-api', 'basePath' => dirname(__DIR__), 'controllerNamespace' => 'apicontrollers',]
初始化高级模板
在初始化之前不妨先看下这篇文章
cd advancedphp init
打开commonconfigmain.php开启url路由美化规则
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ],],
打开commonconfigbootstrap.php添加以下别名
Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api');
ok,以上工作准备完毕,接下来进入正题,
关于版本更多介绍可以参考 权威指南 ,这里不过多解释(PS:主要我也不会......)
我的理解:
Yii2 的版本你可以理解为不同的模块,每一个版本就是一个新的模块,比如常见的v1,v2等。
模块的搭建
关于如何生成模块,我们可以使用GII来进行生成.
配置 GII
打开 api/config/main-local.php 文件 修改如下:
if (!YII_ENV_TEST) { // configuration adjustments for 'dev' environment $config['bootstrap'][] = 'debug'; $config['modules']['debug'] = [ 'class' => 'yiidebugModule', ]; $config['bootstrap'][] = 'gii'; $config['modules']['gii'] = [ 'class' => 'yiigiiModule', 'allowedIPs' => ['127.0.0.1', '*'] ];}
我这里因为使用的是 Homestead ,默认是不允许访问 GII 的,所以得加上 'allowedIPs' => ['127.0.0.1', '*'] ,否则会出现 Forbidden (#403), 你可以根据自己的需要来进行配置,或者不配置
生成Modules
浏览器中输入 http://your host/gii ,可以看到 Module Generator ,点击 Start
Modules Class 中输入:apimodulesv1Module
Module ID 中输入v1,(一般会自动输入)
点击 Preview
最后点击 Generate 进行生成
配置模块
打开 api/config/main.php 文件,修改 modules
'modules' => [ 'v1'=>[ 'class'=>'apimodulesv1Module', ],],
接着修改 urlManager
'urlManager' => [ 'enablePrettyUrl' => true, 'enableStrictParsing' => true, 'showScriptName' => false, 'rules' => [ ['class' => 'yiirestUrlRule', 'controller' => 'v1/default', 'extraPatterns'=>[ 'GET index'=>'index', ], ], ],],
基于以上,Yii2.0 RESTFul API 就实现了版本管理,我们可以通过如下地址进行访问:
http://localhost/v1/defaults
多说一点,我上方的地址是已经映射到api/web目录,请根据自己的实际情况进行配置
打开刚生成的 modules 文件目录,可以看到里面存在一个 v1 的目录,可以看到该目录还有一个controllers,以及一个 views 目录
,我们刚才访问的 defaults 其实就是这两个文件,和传统的web项目一样控制器渲染视图
好了,你可能知道了,我们以后的控制器代码就放到 modules/v1/controllers 里了
刚才仅仅是默认GII为我们生成的代码,因为我们是API,所以 views 目录,我们一般情况下用不到。
新建一个 rest 的控制器
在 modulesv1controllers 下新建 UserController
<?phpnamespace apimodulesv1controllers;use yiirestController;/** * User controller for the `v1` module */class UserController extends Controller{ /** * @return string */ public function actionIndex() { return 'this is v1/user'; }}
修改 api/config/main.php 中的urlManager
'urlManager' => [ 'enablePrettyUrl' => true, 'enableStrictParsing' => true, 'showScriptName' => false, 'rules' => [ ['class' => 'yiirestUrlRule', 'controller' => 'v1/default', 'extraPatterns'=>[ 'GET index'=>'index', ], ], ['class' => 'yiirestUrlRule', 'controller' => 'v1/user', 'extraPatterns'=>[ 'GET index'=>'index', ], ], ],],
试着访问下
http://localhost/v1/users/index
ok,以上就是 Yii2.0 版本管理的实现方式
格式化响应
修改 api/config/main.php 在components 数组中添加 response
'response' => [ 'class' => 'yiiwebResponse', 'on beforeSend' => function ($event) { $response = $event->sender; $response->data = [ 'success' => $response->isSuccessful, 'code' => $response->getStatusCode(), 'message' => $response->statusText, 'data' => $response->data, ]; $response->statusCode = 200; },],
以上就是Yii2.0 RESTful API的版本控制的介绍(代码示例)的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是为您收集整理的Yii2.0RESTfulAPI的版本控制的介绍(代码示例)全部内容,希望文章能够帮你解决Yii2.0RESTfulAPI的版本控制的介绍(代码示例)所遇到的程序开发问题。 如果觉得技术教程内容还不错,欢迎将网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。