Yii2.0 RESTful API 之版本控制
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
打开api\config\main.php
修改id
,controllerNamespace
:
return ['id' => 'app-api','basePath' => dirname(__DIR__),'controllerNamespace' => 'api\controllers',
]
复制代码
初始化高级模板
在初始化之前不妨先看下这篇文章
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:主要我也不会......)
我的理解: 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' => '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), 你可以根据自己的需要来进行配置,或者不配置
生成Modules
浏览器中输入 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
<?phpnamespace 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 篇文章,分别为:
Yii2.0 RESTful API 基础配置教程
Yii2.0 RESTful API 认证教程
Yii2.0 RESTful API 之版本控制
写得实在不怎么样,您如果看了有收获,不妨留言给个评论,或者您觉得写得有问题,或者不明白,也可以留言,我们可以一块探讨研究。
转载于:https://juejin.im/post/5c360685e51d4539b927bbad
Yii2.0 RESTful API 之版本控制相关推荐
- php restful 认证,Yii2.0 RESTful API 认证教程
认证介绍 和Web应用不同,RESTful APIs 通常是无状态的, 也就意味着不应使用 sessions 或 cookies, 因此每个请求应附带某种授权凭证,因为用户授权状态可能没通过 sess ...
- ThinkPHP5 RESTful API开发版本控制
thinkphp5 RESTful api开发版本控制,thinkphp官方文档不是很详细,我根据个人经验分享下. 我们以一个用户信息读取的接口为例,包含两个版本V1和V2,v2版本的接口包括用户的档 ...
- Java Web学习总结(43)—— Restful API 版本控制
在实际项目开发中我们经常需要对接口进行版本管理.那今天我们就来聊聊为什么需要版本控制,以及如何对REST API进行版本控制.我们将讨论4种版本控制的方法,并比较不同的方法. 为什么我们需要对REST ...
- 深入探索REST(1):如何设计好的RESTful API?
REST架构风格最初由Roy T. Fielding(HTTP/1.1协议专家组负责人)在其2000年的博士学位论文中提出.HTTP就是该架构风格的一个典型应用.从其诞生之日开始,它就因其可扩展性和简 ...
- 如何设计好的RESTful API?
REST架构风格最初由Roy T. Fielding(HTTP/1.1协议专家组负责人)在其2000年的博士学位论文中提出.HTTP就是该架构风格的一个典型应用.从其诞生之日开始,它就因其可扩展性和简 ...
- 虚拟研讨会:如何设计好的RESTful API?
http://www.infoq.com/cn/articles/how-to-design-a-good-restful-api/ REST架构风格最初由Roy T. Fielding(HTTP/1 ...
- 如何设计好的RESTful API之安全性
转自http://www.searchsoa.com.cn/showcontent_75305.htm InfoQ:安全是恒久的话题,对于基于WSDL和SOAP的Web Service,我们有WS-S ...
- 如何设计好的RESTful API 之好的RESTful API 特征
原文地址:http://blog.csdn.net/ywk253100/article/details/25654021 导读:设计好RESTful API对于软件架构的可扩展性.可伸缩性和消费者的体 ...
- Yii2 使用 RESTful 写API接口 实例
Yii2 使用 RESTful?其实 Yii2 框架本身就对 RESTful 是友好支持的,具体可以看官方文档(http://www.yiichina.com/doc/guide/2.0/rest-q ...
最新文章
- POJ 2485 - Highways(求最小生成树的最大权值-Kruskal算法)
- mybatis-翻页
- CentOS安装cheat和tldr
- 信息学奥赛一本通C++语言——1011: 甲流疫情死亡率
- win8.1除了应用界面的应用,其他系统程序都不能上网,包括IE
- java samphore 连接池_ADOConnection数据库连接池
- cssz中a标签鼠标选中去除选中边框
- vector用法 java equals_java泛型vector的用法 | 学步园
- C++通过WIN32 API获取逻辑磁盘详细信息
- 百度开源移动端深度学习框架mobile-deep-learning(MDL)
- Django项目详解2——动态响应的web应用
- android模拟器动态调试,Unity Android模拟器调试
- IAP商品修改和数据获取,一文带你全部搞懂
- 抖音小店营业执照怎么办理?新手做抖店营业执照范围应该怎么选?
- DSPE-PEG3-Mal,小分子PEG连接马来酰亚胺基团
- 商品评论情感分析——基于商品评论建立的产品综合评价模型(1)
- 主角叫张四的Java游戏_第一卷 :仙剑世界中的黑化张四 123 贝爷附体
- 请编程实现输出自然数1到1000中含有数字2的数的个数。
- 哪一件事让你忽然意识到打工永无出路?
- SQLServer2016(理论知识点与一些简单的习题汇总)
热门文章
- USACO JANUARY——矩形[rects]
- oracle RAC的VIP和scan
- 分布式计算开源框架Hadoop入门实践
- C#编码标准--命名约定和风格
- 网上几种常见校验码图片分析
- asp.net中DataGrid性能测试
- 激活函数之logistic sigmoid函数介绍及C++实现
- php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?
- spring上下文是什么意思_Java程序员只会CRUD连Spring事务传播机制都不懂?
- mac上mysql关闭不了了_python操作mysql数据库