搜索
首页后端开发php教程Yii2.0 RESTful API的版本控制的介绍(代码示例)

Yii2.0 RESTful API的版本控制的介绍(代码示例)

Jan 10, 2019 am 11:27 AM
apiphprestfulyii2版本控制

本篇文章给大家带来的内容是关于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

427039506-5c36086850b51_articlex.png

最后点击 Generate 进行生成

3248197988-5c3608798c334_articlex.png

配置模块

打开 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 &#39;this is v1/user&#39;;
    }
}

修改 api/config/main.php 中的urlManager

&#39;urlManager&#39; => [
    '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的版本控制的介绍(代码示例)的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:segmentfault。如有侵权,请联系admin@php.cn删除
超越炒作:评估当今PHP的角色超越炒作:评估当今PHP的角色Apr 12, 2025 am 12:17 AM

PHP在现代编程中仍然是一个强大且广泛使用的工具,尤其在web开发领域。1)PHP易用且与数据库集成无缝,是许多开发者的首选。2)它支持动态内容生成和面向对象编程,适合快速创建和维护网站。3)PHP的性能可以通过缓存和优化数据库查询来提升,其广泛的社区和丰富生态系统使其在当今技术栈中仍具重要地位。

PHP中的弱参考是什么?什么时候有用?PHP中的弱参考是什么?什么时候有用?Apr 12, 2025 am 12:13 AM

在PHP中,弱引用是通过WeakReference类实现的,不会阻止垃圾回收器回收对象。弱引用适用于缓存系统和事件监听器等场景,需注意其不能保证对象存活,且垃圾回收可能延迟。

解释PHP中的__ Invoke Magic方法。解释PHP中的__ Invoke Magic方法。Apr 12, 2025 am 12:07 AM

\_\_invoke方法允许对象像函数一样被调用。1.定义\_\_invoke方法使对象可被调用。2.使用$obj(...)语法时,PHP会执行\_\_invoke方法。3.适用于日志记录和计算器等场景,提高代码灵活性和可读性。

解释PHP 8.1中的纤维以进行并发。解释PHP 8.1中的纤维以进行并发。Apr 12, 2025 am 12:05 AM

Fibers在PHP8.1中引入,提升了并发处理能力。1)Fibers是一种轻量级的并发模型,类似于协程。2)它们允许开发者手动控制任务的执行流,适合处理I/O密集型任务。3)使用Fibers可以编写更高效、响应性更强的代码。

PHP社区:资源,支持和发展PHP社区:资源,支持和发展Apr 12, 2025 am 12:04 AM

PHP社区提供了丰富的资源和支持,帮助开发者成长。1)资源包括官方文档、教程、博客和开源项目如Laravel和Symfony。2)支持可以通过StackOverflow、Reddit和Slack频道获得。3)开发动态可以通过关注RFC了解。4)融入社区可以通过积极参与、贡献代码和学习分享来实现。

PHP与Python:了解差异PHP与Python:了解差异Apr 11, 2025 am 12:15 AM

PHP和Python各有优势,选择应基于项目需求。1.PHP适合web开发,语法简单,执行效率高。2.Python适用于数据科学和机器学习,语法简洁,库丰富。

php:死亡还是简单地适应?php:死亡还是简单地适应?Apr 11, 2025 am 12:13 AM

PHP不是在消亡,而是在不断适应和进化。1)PHP从1994年起经历多次版本迭代,适应新技术趋势。2)目前广泛应用于电子商务、内容管理系统等领域。3)PHP8引入JIT编译器等功能,提升性能和现代化。4)使用OPcache和遵循PSR-12标准可优化性能和代码质量。

PHP的未来:改编和创新PHP的未来:改编和创新Apr 11, 2025 am 12:01 AM

PHP的未来将通过适应新技术趋势和引入创新特性来实现:1)适应云计算、容器化和微服务架构,支持Docker和Kubernetes;2)引入JIT编译器和枚举类型,提升性能和数据处理效率;3)持续优化性能和推广最佳实践。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版