资讯专栏INFORMATION COLUMN

Yii2.0 RESTful API 之版本控制

_ang / 2337人阅读

摘要:之版本控制之前我写过两篇关于如何搭建,以及认证等处理,但是没有涉及到版本管理,今天就来谈谈版本管理如何实现。如果你还没有安装,你可以按照这里的说明进行安装。

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 advanced
php 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 中输入:apimodulesv1Module

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

点击 Preview

最后点击 Generate 进行生成

配置模块

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

"modules" => [
    "v1"=>[
        "class"=>"apimodulesv1Module",
    ],
],

接着修改 urlManager

"urlManager" => [
    "enablePrettyUrl" => true,
    "enableStrictParsing" => true,
    "showScriptName" => false,
    "rules" => [
        ["class" => "yii
estUrlRule",
            "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 的控制器
modulesv1controllers 下新建 UserController


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

"urlManager" => [
    "enablePrettyUrl" => true,
    "enableStrictParsing" => true,
    "showScriptName" => false,
    "rules" => [
        ["class" => "yii
estUrlRule",
            "controller" => "v1/default",
            "extraPatterns"=>[
                "GET index"=>"index",
            ],
        ],
        ["class" => "yii
estUrlRule",
            "controller" => "v1/user",
            "extraPatterns"=>[
                "GET index"=>"index",
            ],
        ],
    ],
],

试着访问下

http://localhost/v1/users/index

ok,以上就是 Yii2.0 版本管理的实现方式

格式化响应

修改 api/config/main.phpcomponents 数组中添加 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 我一共完成了 3 篇文章,分别为:

Yii2.0 RESTful API 基础配置教程

Yii2.0 RESTful API 认证教程

Yii2.0 RESTful API 之版本控制

写得实在不怎么样,您如果看了有收获,不妨留言给个评论,或者您觉得写得有问题,或者不明白,也可以留言,我们可以一块探讨研究。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/29917.html

相关文章

  • Yii2.0 RESTful API 速率限制

    摘要:之速率限制什么是速率限制权威指南翻译过来为限流,为防止滥用,你应该考虑对您的限流。如果在规定的时间内接收了一个用户大量的请求,将返回响应状态代码这意味着过多的请求。 Yii2.0 RESTful API 之速率限制 什么是速率限制? 权威指南翻译过来为限流,为防止滥用,你应该考虑对您的 API 限流。 例如,您可以限制每个用户 10 分钟内最多调用 API 100 次。 如果在规定的时...

    LeviDing 评论0 收藏0
  • Yii2.0 RESTful API 基础配置教程[转载]

    摘要:最近在做功能,找了好久的资料,才找到这类的教程,感谢该作者,以下内容根据我的项目实际情况做了一定的修改。 最近在做Yii2.0 RESTful API功能,找了好久的资料,才找到这类的教程,感谢该作者,以下内容根据我的项目实际情况做了一定的修改。 安装yii2.0 安装 Composer 后,您可以通过在 Web 可访问的文件夹下运行以下命令来 安装Yii应用程序模板: compose...

    xorpay 评论0 收藏0
  • Yii2.0 RESTful API 基础配置教程

    这篇说下yii2.0开发 API 吧,使用 RESTful API模式 安装Yii2.0 通过 Composer 安装 这是安装Yii2.0的首选方法。如果你还没有安装 Composer,你可以按照这里的说明进行安装。 安装完 Composer,运行下面的命令来安装 Composer Asset 插件: php composer.phar global require fxp/composer-a...

    fyber 评论0 收藏0
  • Yii2.0 RESTful API 认证教程

    摘要:请求参数当作请求参数发送,例如,由于大多数服务器都会保存请求参数到日志,这种方式应主要用于请求,因为它不能使用头来发送使用者从认证服务器上获取基于协议的,然后通过发送到服务器。 认证介绍 和Web应用不同,RESTful APIs 通常是无状态的, 也就意味着不应使用 sessions 或 cookies, 因此每个请求应附带某种授权凭证,因为用户授权状态可能没通过 sessions ...

    JohnLui 评论0 收藏0
  • Yii2.0 RESTful API 认证教程【令牌验证】

    摘要:最近在做认证功能,记录整个过程,方便以后查看。请求参数当作请求参数发送,例如,由于大多数服务器都会保存请求参数到日志,这种方式应主要用于请求,因为它不能使用头来发送使用者从认证服务器上获取基于协议的,然后通过发送到服务器。 最近在做RESTful API认证功能,记录整个过程,方便以后查看。本文参照了 https://segmentfault.com/a/119000001636860...

    X1nFLY 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<