kirillsimin / semaphore
Laravel API 资源版本化路由
dev-master
2018-09-24 18:37 UTC
This package is auto-updated.
Last update: 2024-09-25 07:54:38 UTC
README
Laravel 的 API 资源版本化路由
安装
使用 composer 安装此包
composer require kirillsimin/semaphore
Laravel 5.5+ 使用包自动发现,因此不需要您手动添加 ServiceProvider。
如果要在路由中使用外观,请将以下内容添加到 app.php 中的 facades
'VersionedRoute' => Kirillsimin\Semaphore\VersionedRoute::class,
Laravel 5.5+
如果您不使用自动发现,请将 ServiceProvider 添加到 config/app.php 中的 providers 数组
KirillSimin\Semaphore\ServiceProvider::class,
使用发布命令将包配置复制到本地配置
php artisan vendor:publish --provider="Kirillsimin\Semaphore"
用法
- 从现有控制器创建默认版本的 API 资源控制器
- 创建一个与您要版本化的 API 资源控制器同名的文件夹。例如,如果您正在版本化
app/Http/Controllers/PhotosController.php,则创建此文件夹:app/Http/Controllers/PhotosController/。 - 将
PhotosController.php重命名为PhotosController_v0.php - 将类名更改为
PhotosController_v0 - 更新命名空间并包含基础控制器(
use App\Http\Controllers\Controller;)。
- 创建下一个版本
- 在同一个文件夹中创建
PhotosController_v1.php - 将类名称为
PhotosController_v1并确保它extends PhotosController_v0 - 覆盖您希望更新的任何方法。所有其他方法将调用上一个版本的方法。
- 更新您的路由文件。
- 在您的 routes/api.php 中,要么在顶部包含包(
use KirillSimin\Semaphore\VersionedRoute),要么在app.php中使用别名 - 将
Route::apiResource('photos', 'PhotosController');替换为VersionedRoute::apiResource('photos', 'PhotosController')
- 调用正确的控制器
- 该路由接受自定义的
controller-version标头。如果您没有传递它,它将默认为_v0。如果您传递一个数字,它将尝试定位正确的控制器版本。