codegalaxy/api-version-control 问题修复 & 功能扩展

解决BUG、新增功能、兼容多环境部署,快速响应你的开发需求

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

codegalaxy/api-version-control

最新稳定版本:v1.0.1

Composer 安装命令:

composer require codegalaxy/api-version-control

包简介

A Hyperf package to manage api versions

README 文档

README

A Hyperf package to manage api versions.

安装

composer require codegalaxy/api-version-control

配置

php bin/hyperf.php vendor:publish codegalaxy/api-version-control

修改 config/autoload/version_control.php 中配置:

<?php

declare(strict_types=1);

use Hyperf\HttpServer\Contract\RequestInterface;

return [
    'enable' => (bool) env('VERSION_CONTROL_ENABLE', true),
    'versionParser' => function (RequestInterface $request) : ?float {
        $version = $request->input('version');
        return $version ? (float) $version : null;
    },
];

定义路由

编写一个控制器 app/controller/VcController.php,如下所示:

<?php

declare(strict_types=1);

namespace App\Controller;

class VcController extends AbstractController
{
    public function none()
    {
        return 'none';
    }

    public function v1()
    {
        return 'v1';
    }

    public function v2()
    {
        return 'v2';
    }

    public function v3()
    {
        return 'v3';
    }

    public function v11()
    {
        return 'v1.1';
    }
}

定义路由 config/routes.php

<?php

declare(strict_types=1);

use App\Controller\VcController;
use CodeGalaxy\ApiVersionControl\Router as VcRouter;
use Hyperf\HttpServer\Router\Router;

// 整体定义
Router::get('/vc/test', VcController::class . '@none', [
    'vc' => [
        '<=1' => VcController::class . '@v1',
        '<=1.1' => VcController::class . '@v11',
        '<=2' => VcController::class . '@v2',
        '>=3' => VcController::class . '@v3',
    ],
]);

// 分版本定义
// 默认版本
VcRouter::apiVersion(null, function () {
    VcRouter::get('/vc/test', VcController::class . '@none');
    VcRouter::get('/vc/another', VcController::class . '@another');
});

// 版本<=1
VcRouter::apiVersion('<=1', function () {
    VcRouter::get('/vc/test', VcController::class . '@v1');
    VcRouter::get('/vc/another', VcController::class . '@anotherV1');
});

// 版本<=3
VcRouter::apiVersion('<=3', function () {
    VcRouter::get('/vc/test', VcController::class . '@v3');
    VcRouter::get('/vc/another', VcController::class . '@anotherV3');
});

// 必须在所有路由定义完成之后调用
VcRouter::load();

测试

curl http://127.0.0.1:9501/vc/test
# 响应 none

curl http://127.0.0.1:9501/vc/test?version=1
# 响应 v1

curl http://127.0.0.1:9501/vc/test?version=3
# 响应 v3

统计信息

  • 总下载量: 136
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2022-10-08

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固