lukepolo/laravel-api-migrations

0.0.5 2017-09-05 16:55 UTC

This package is auto-updated.

Last update: 2024-08-28 01:30:27 UTC


README

Latest Version on Packagist Build Status StyleCI

本包基于 Stripe 使用的 API 版本控制方案。用户传递一个版本头,然后系统会自动迁移请求和响应数据以匹配当前代码版本。

TLDR

使用 API 迁移更新您的 API,无需担心用户应用程序会中断。

您编写这些递增迁移,以便将请求/响应数据回溯到以前的时间,以便您的用户应用程序能够完美运行。

特性

  • 用户版本锁定
  • 支持主要 API 版本控制
  • 通过 artisan 命令提供约定

如何在日常开发中使用

在发布您的 API 时,应创建发布版本(包括您的当前版本)。这允许系统知道如何迁移请求/响应到旧版本的 API。

例如

当前 发布版本 V1 - 2017-08-31 预期响应

    [
        'firstname' => 'Dwight',
        'lastname'  => 'Schrute',
        'title'     => 'Assistant to the Regional Manager'
    ]

发布 V1 - 2017-08-01 预期响应

    [
        'firstname' => 'Dwight',
        'lastname'  => 'Schrute',
        'title'     => 'Assistant to the Regional Manager',
        'secret_title' => 'Assistant Regional Manager',
    ]

当您的用户使用旧 API 时,他们希望看到那个秘密标题。

然后它将请求 2017-08-31 迁移到 2017-08-01

这是一个简单的例子,但您可以看到这些迁移的强大功能,它们可以轻松地创建步骤来迁移您的当前 API 版本到旧版本。

安装

composer require lukepolo/laravel-api-migrations

服务提供者 & Facade

此包支持 Laravel 5.5 自动加载,因此服务提供者和 Facade 将自动加载。

如果您使用的是 Laravel 的早期版本或已禁用自动加载,您需要将服务提供者和 Facade 添加到 config/app.php

'providers' => [
    ...
    \LukePOLO\LaravelApiMigrations\ServiceProvider::class,
]
'aliases' => [
    ...
    'LaravelApiMigrations' => \LukePOLO\LaravelApiMigrations\Facades\LaravelApiMigrations::class,
]

中间件

将中间件添加到您的 Http Kernel app/Http/Kernel.php

您有几个选择在哪里放置它,建议放在 api 中间件下面!

protected $middlewareGroups = [
    'api' => [
        ...
        \LukePOLO\LaravelApiMigrations\LaravelApiMigrationsMiddleware::class,
    ];
]

配置

运行以下 Artisan 命令,将包配置发布到 config/request-migrations.php

php artisan vendor:publish --provider="LukePOLO\LaravelApiMigrations\ServiceProvider" --tag=config

使用方法

创建发布版本

您可以使用 Artisan CLI 生成新的发布版本。

php artisan make:api-release

创建迁移

您可以使用 Artisan CLI 生成新的 API 迁移。

php artisan make:api-migration ExampleMigration

该命令将生成一个 API 迁移并将其发布到 App/Http/ApiMigrations/V{VersionNumber}/Release_{YYYY_MM_DD}/{MigrationName}

缓存迁移

一旦您迁移到生产环境,您应该缓存结果

php artisan cache:api-migrations

制作 HTTP 请求

默认情况下,当向您的 API 发送请求时,不会运行任何迁移。

要使用您 API 的不同版本,只需附加一个头

    'Api-Version' : '2017-08-31'  

编写 API 迁移

migrateRequest 方法:用于将您的请求转换为对当前路由有效的请求

migrateResponse 方法:用于将响应转换为该版本应预期的响应

示例:-- 链接到 gist --

版本控制

您应使用上述 artisan 命令创建发布版本,包括您的当前版本。您还可以在配置中设置您的当前版本。

您可以通过以下方式在配置中标记当前版本

    'current_versions' => [
        'V1' => '2017-01-31',
    ],

``### 用户版本锁定

php artisan vendor:publish --provider="LukePOLO\LaravelApiMigrations\ServiceProvider" --tag=migrations

!!!! 注意 !!!!!

您还必须在您的 User 模型中将列 api_version 设置为可填充的!

变更日志

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

测试

composer test

贡献

请参阅CONTRIBUTING获取详细信息。

安全

如果您发现任何与安全相关的问题,请发送电子邮件至luke@lukepolo.com,而不是使用问题跟踪器。

许可证

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

鸣谢

此软件包最初是由Tom Schlick构思的,但经过了大量修改。

https://github.com/tomschlick/request-migrations