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.phpcomponents 数组中添加 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 之版本控制相关推荐

  1. php restful 认证,Yii2.0 RESTful API 认证教程

    认证介绍 和Web应用不同,RESTful APIs 通常是无状态的, 也就意味着不应使用 sessions 或 cookies, 因此每个请求应附带某种授权凭证,因为用户授权状态可能没通过 sess ...

  2. ThinkPHP5 RESTful API开发版本控制

    thinkphp5 RESTful api开发版本控制,thinkphp官方文档不是很详细,我根据个人经验分享下. 我们以一个用户信息读取的接口为例,包含两个版本V1和V2,v2版本的接口包括用户的档 ...

  3. Java Web学习总结(43)—— Restful API 版本控制

    在实际项目开发中我们经常需要对接口进行版本管理.那今天我们就来聊聊为什么需要版本控制,以及如何对REST API进行版本控制.我们将讨论4种版本控制的方法,并比较不同的方法. 为什么我们需要对REST ...

  4. 深入探索REST(1):如何设计好的RESTful API?

    REST架构风格最初由Roy T. Fielding(HTTP/1.1协议专家组负责人)在其2000年的博士学位论文中提出.HTTP就是该架构风格的一个典型应用.从其诞生之日开始,它就因其可扩展性和简 ...

  5. 如何设计好的RESTful API?

    REST架构风格最初由Roy T. Fielding(HTTP/1.1协议专家组负责人)在其2000年的博士学位论文中提出.HTTP就是该架构风格的一个典型应用.从其诞生之日开始,它就因其可扩展性和简 ...

  6. 虚拟研讨会:如何设计好的RESTful API?

    http://www.infoq.com/cn/articles/how-to-design-a-good-restful-api/ REST架构风格最初由Roy T. Fielding(HTTP/1 ...

  7. 如何设计好的RESTful API之安全性

    转自http://www.searchsoa.com.cn/showcontent_75305.htm InfoQ:安全是恒久的话题,对于基于WSDL和SOAP的Web Service,我们有WS-S ...

  8. 如何设计好的RESTful API 之好的RESTful API 特征

    原文地址:http://blog.csdn.net/ywk253100/article/details/25654021 导读:设计好RESTful API对于软件架构的可扩展性.可伸缩性和消费者的体 ...

  9. Yii2 使用 RESTful 写API接口 实例

    Yii2 使用 RESTful?其实 Yii2 框架本身就对 RESTful 是友好支持的,具体可以看官方文档(http://www.yiichina.com/doc/guide/2.0/rest-q ...

最新文章

  1. POJ 2485 - Highways(求最小生成树的最大权值-Kruskal算法)
  2. mybatis-翻页
  3. CentOS安装cheat和tldr
  4. 信息学奥赛一本通C++语言——1011: 甲流疫情死亡率
  5. win8.1除了应用界面的应用,其他系统程序都不能上网,包括IE
  6. java samphore 连接池_ADOConnection数据库连接池
  7. cssz中a标签鼠标选中去除选中边框
  8. vector用法 java equals_java泛型vector的用法 | 学步园
  9. C++通过WIN32 API获取逻辑磁盘详细信息
  10. 百度开源移动端深度学习框架mobile-deep-learning(MDL)
  11. Django项目详解2——动态响应的web应用
  12. android模拟器动态调试,Unity Android模拟器调试
  13. IAP商品修改和数据获取,一文带你全部搞懂
  14. 抖音小店营业执照怎么办理?新手做抖店营业执照范围应该怎么选?
  15. DSPE-PEG3-Mal,小分子PEG连接马来酰亚胺基团
  16. 商品评论情感分析——基于商品评论建立的产品综合评价模型(1)
  17. 主角叫张四的Java游戏_第一卷 :仙剑世界中的黑化张四 123 贝爷附体
  18. 请编程实现输出自然数1到1000中含有数字2的数的个数。
  19. 哪一件事让你忽然意识到打工永无出路?
  20. SQLServer2016(理论知识点与一些简单的习题汇总)

热门文章

  1. USACO JANUARY——矩形[rects]
  2. oracle RAC的VIP和scan
  3. 分布式计算开源框架Hadoop入门实践
  4. C#编码标准--命名约定和风格
  5. 网上几种常见校验码图片分析
  6. asp.net中DataGrid性能测试
  7. 激活函数之logistic sigmoid函数介绍及C++实现
  8. php foreach嵌套foreach,php中foreach怎么嵌套foreach PHP中foreach函数用法?
  9. spring上下文是什么意思_Java程序员只会CRUD连Spring事务传播机制都不懂?
  10. mac上mysql关闭不了了_python操作mysql数据库