marcguyer / version-middleware
PSR-7 中间件,用于管理可路由的版本。
0.0.1
2019-01-20 22:52 UTC
Requires
- php: ^7.1
- psr/container: ^1.0
- psr/http-message: ^1.0
- psr/http-server-middleware: ^1.0
Requires (Dev)
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ^7.3
- psr/http-server-handler: ^1.0
- squizlabs/php_codesniffer: ^3.4
- webimpress/coding-standard: dev-master@dev
- zendframework/zend-coding-standard: dev-develop@dev
- zendframework/zend-diactoros: ^2.1
This package is auto-updated.
Last update: 2024-09-21 20:31:01 UTC
README
提供版本检测,使得在PSR-7应用程序中实现版本化资源路由成为可能。
安装
使用composer安装此库
$ composer require marcguyer/version-middleware
如果你使用 zendframework/zend-component-installer
,Composer会询问你是否要注入ConfigProvider。回答“是”或手动配置。
使用方法
配置
查看ConfigProvider以获取配置默认值。你可以使用versioning
键进行覆盖。例如,默认版本是1
。你可能发布了一个新版本,并将默认版本设置为2
。任何未通过路径或头指定版本的客户端都将访问版本2的资源。
添加到管道
在路由之前将此中间件连接到你的管道。以下是一个使用Zend Expressive管道的示例
... $app->pipe(ServerUrlMiddleware::class); ... $app->pipe(Psr7Versioning\VersionMiddleware::class); ... $app->pipe(RouteMiddleware::class); ...
路由
现在,你可以根据重写的URI路径进行路由。例如,在Expressive中
$app->get('/api/v1/ping', Api\Handler\PingHandler::class, 'api.ping'); $app->get('/api/v2/ping', Api\V2\Handler\PingHandler::class, 'api.v2.ping');
命名空间版本
现在,使用上述路由示例,假设你的v1 Ping在命名空间Api\Handler
中,你可以将v2 Ping的命名空间设置为Api\V2\Handler
并扩展v1处理器。任何对服务、模型、其他中间件的引用都将遵循该命名空间。或者,将你想要在新的版本中包含的所有内容完全复制到一个新的命名空间中。
贡献
Docker镜像
仓库中的Dockerfile
可用于在本地创建轻量级镜像,用于运行测试和其他composer脚本
docker build --tag [your_chosen_image_name] .
运行测试
docker run --rm -it -v $(pwd):/app [your_chosen_image_name] composer test