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

打开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' => [    ],],

登录后复制

打开commonconfigootstrap.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 中输入:apimodules1Module

Module ID 中输入v1,(一般会自动输入)

点击 Preview

427039506-5c36086850b51_articlex.png

最后点击 Generate 进行生成

3248197988-5c3608798c334_articlex.png

配置模块

打开 api/config/main.php 文件,修改 modules

'modules' => [    'v1'=>[        'class'=>'apimodules1Module',    ],],

登录后复制

接着修改 urlManager

'urlManager' => [    'enablePrettyUrl' => true,    'enableStrictParsing' => true,    'showScriptName' => false,    'rules' => [        ['class' => 'yiiestUrlRule',            '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 的控制器
在  modules1controllers 下新建 UserController

<?phpnamespace apimodules1controllers;use yiiestController;/** * 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' => 'yiiestUrlRule',            'controller' => 'v1/default',            'extraPatterns'=>[                'GET index'=>'index',            ],        ],        ['class' => 'yiiestUrlRule',            '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的版本控制的介绍(代码示例)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2630148.html

(0)
上一篇 2025年3月7日 02:25:09
下一篇 2025年2月26日 05:37:26

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Yii2.0 RESTful API的速度限制是什么?有什么用?

    本篇文章给大家带来的内容是关于yii2.0 restful api的速度限制是什么?有什么用?有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 什么是速率限制? 权威指南翻译过来为限流,为防止滥用,你应该考虑对您的 API 限…

    编程技术 2025年3月7日
    000
  • 怎么理解restful

    restful是表述性状态转移,它是一个以网络为基础的软件架构设计,可以通过它的架构核心和4个约束来理解RESTful。 REST全称是Representational State Transfer,中文意思是表述(编者注:通常译为表征)性…

    2025年3月7日
    200
  • restful是什么?

    restful是什么 如果一个架构符合REST原则,就称它为RESTful架构。 RESTful API实用的是如何正确地理解 RESTful架构和设计好RESTful API。首先为什么要用RESTful结构呢?大家都知道”古…

    2025年3月7日
    200
  • restful api是什么?

    RESTful API是REST风格的API,是一套用来规范多种形式的前端和同一个后台的交互方式的协议。RESTful API由后台也就是SERVER来提供前端来调用;前端调用API向后台发起HTTP请求,后台响应请求将处理结果反馈给前端。…

    2025年3月7日
    200
  • web API接口及restful规范详解

    什么是web api接口? 明确了请求方式,提供对应后台所需参数,请求url链接可以得到后台的响应数据 请求方式:get,post,put,patch….请求参数:json或xml格式的key-value类型数据响应结果:返回j…

    2025年3月7日
    200
  • PHP基于ElasticSearch做搜索

    elasticsearch是一个基于lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于restful web接口。elasticsearch是用java开发的,并作为apache许可条款下的开放源码发布,是当前流行的…

    2025年3月7日
    200
  • Laravel 单行为控制器设计的魅力

    昨天,Jeffrey Way 发布了一条推文,他问大家更愿意将其控制器命名为单数还是复数。 我回答我两种方案都不选,我使用单动作控制器。随后发生的是,有的人同意,有的不同意,有的甚至做出了最奇怪的事情。 由于十分强烈的反映,我想写一篇文章来…

    2025年3月7日
    200
  • 教你用Laravel发一封“漂洋过海”的电子邮件

                                                            下面由Laravel教程栏目给大家介绍用Laravel发一封“漂洋过海”的电子邮件,希望对需要的朋友有所帮助! 引言 电子邮件从…

    2025年3月7日
    200
  • Laravel教你简单写出专业的RestfulAPI

                                                            下面由Laravel教程栏目给大家介绍Laravel写出专业的RestfulAPI的方法,希望对需要的朋友有所帮助! Larav…

    2025年3月7日 编程技术
    200
  • 一文详解thinkphp控制器的定义和使用

    下面由thinkphp框架教程栏目给大家介绍thinkphp控制器的定义和使用,希望对需要的朋友有所帮助! thinkphp控制器 控制器定义 类名和文件名一样, 渲染输出 渲染输出使用return输出 ‘ming’, ‘ming’ =&g…

    2025年3月7日 编程技术
    200

发表回复

登录后才能评论