bbrothers/http-transitions

基于请求头进行版本控制的API版本化,通过过渡阶段(迁移)。

v0.5.0 2019-04-15 15:56 UTC

This package is auto-updated.

Last update: 2024-09-16 03:47:40 UTC


README

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

一个基于版本头过渡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标志来创建仅生成transformRequesttransformResponse方法的转换。

变更日志

请参阅CHANGELOG以获取最近更改的更多信息。

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。