bbrothers / http-transitions
基于请求头进行版本控制的API版本化,通过过渡阶段(迁移)。
v0.5.0
2019-04-15 15:56 UTC
Requires
- php: ^7.1
- ext-json: *
- illuminate/config: 5.5.*|5.6.*|5.7.*|5.8.*
- illuminate/contracts: 5.5.*|5.6.*|5.7.*|5.8.*
- illuminate/http: 5.5.*|5.6.*|5.7.*|5.8.*
- illuminate/support: 5.5.*|5.6.*|5.7.*|5.8.*
Requires (Dev)
- orchestra/testbench: ~3.7
- phpunit/phpunit: ^7.0
- squizlabs/php_codesniffer: ^2.3
README
一个基于版本头过渡HTTP请求和响应的包。
通过创建Transition
类来过渡请求和/或响应以匹配先前预期的结果,从而在不破坏现有客户端的情况下更新您的API模式。每个过渡层的唯一任务是将当前版本转换为上一个版本,然后请求和响应将通过后续层传递,直到与Api-Version
头中请求的版本匹配。
主要基于Stripe的API版本化文章。
安装
$ composer require bbrothers/http-transitions
中间件
在您的app/Http/Kernel.php
文件中,添加
protected $middleware = [ Transitions\TransitionMiddleware::class ];
服务提供者
对于Laravel 5.4,在您的config/app.php
文件中,在providers
数组中添加
Transitions\TransitionProvider::class
发布配置
php artisan vendor:publish --provider="Transitions\TransitionProvider"
用法
将版本号和Transition
类的数组添加到transitions.php
文件中。
return [ 'headerKey' => 'Api-Version', 'transitions' => [ '20160101' => [ FullNameToNameTransition::class, NameToFirstNameLastNameTransition::class, BirthDateTransition::class, ], '20150101' => [ FirstNameLastNameToFullNameTransition::class, ], ], ]
创建一个过渡
class NameToFirstNameLastNameTransition extends Transition { public function transformResponse(Response $response) : Response { $content = json_decode($response->getContent(), true); $content = array_diff_key(array_merge($content, $content['name']), ['name' => true]); return $response->setContent(json_encode($content)); } }
过渡生成器
$ php artisan make:transition NameToFirstNameLastNameTransition
可选地,可以添加--request-only
或--response-only
标志来创建仅生成transformRequest
或transformResponse
方法的转换。
变更日志
请参阅CHANGELOG以获取最近更改的更多信息。
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。