以前我写过两篇关于 Yii2.0 RESTful API
如何搭建,以及 认证
等处理,可是没有涉及到版本管理,今天就来谈谈版本管理如何实现。php
索性就从头开始一步一步搭建吧,可是关于一些概念以及使用本篇就不一一解释了,能够参考 第一篇 Yii2.0 RESTful API 基础配置教程 进行配置laravel
这是安装Yii2.0的首选方法。若是你尚未安装 Composer
,你能够按照这里的说明进行安装。git
安装完 Composer
,运行下面的命令来安装 Composer Asset
插件:github
composer global require "fxp/composer-asset-plugin:^1.2.0"
安装高级的应用程序模板,运行下面的命令:web
composer create-project yiisoft/yii2-app-advanced yii-api 2.0.14
打开api\config\main.php
修改id
,controllerNamespace
:bootstrap
return [ 'id' => 'app-api', 'basePath' => dirname(__DIR__), 'controllerNamespace' => 'api\controllers', ]
在初始化以前不妨先看下这篇文章api
cd advanced php init
打开common\config\main.php
开启url
路由美化规则数组
'urlManager' => [ 'enablePrettyUrl' => true, 'showScriptName' => false, 'rules' => [ ], ],
打开common\config\bootstrap.php
添加如下别名浏览器
Yii::setAlias('@api', dirname(dirname(__DIR__)) . '/api');
ok,以上工做准备完毕,接下来进入正题,
关于版本更多介绍能够参考 权威指南 ,这里不过多解释(PS:主要我也不会......)restful
个人理解:
Yii2 的版本你能够理解为不一样的模块,每个版本就是一个新的模块,好比常见的v1,v2等。
关于如何生成模块,咱们可使用GII来进行生成.
打开 api/config/main-local.php
文件 修改以下:
if (!YII_ENV_TEST) { // configuration adjustments for 'dev' environment $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), 你能够根据本身的须要来进行配置,或者不配置
浏览器中输入 http://your host/gii
,能够看到 Module Generator
,点击 Start
Modules Class
中输入:api\modules\v1\Module
Module ID
中输入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'=>[ '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
的控制器
在 modules\v1\controllers
下新建 UserController
<?php namespace api\modules\v1\controllers; use yii\rest\Controller; /** * 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' => 'yii\rest\UrlRule', 'controller' => 'v1/default', 'extraPatterns'=>[ 'GET index'=>'index', ], ], ['class' => 'yii\rest\UrlRule', 'controller' => 'v1/user', 'extraPatterns'=>[ 'GET index'=>'index', ], ], ], ],
试着访问下
http://localhost/v1/users/index
ok,以上就是 Yii2.0
版本管理的实现方式
修改 api/config/main.php
在components
数组中添加 response
'response' => [ 'class' => 'yii\web\Response', '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 我一共完成了 3 篇文章,分别为:
写得实在不怎么样,您若是看了有收获,不妨留言给个评论,或者您以为写得有问题,或者不明白,也能够留言,咱们能够一块探讨研究。