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"

用法

  1. 从现有控制器创建默认版本的 API 资源控制器
  • 创建一个与您要版本化的 API 资源控制器同名的文件夹。例如,如果您正在版本化 app/Http/Controllers/PhotosController.php,则创建此文件夹:app/Http/Controllers/PhotosController/
  • PhotosController.php 重命名为 PhotosController_v0.php
  • 将类名更改为 PhotosController_v0
  • 更新命名空间并包含基础控制器(use App\Http\Controllers\Controller;)。
  1. 创建下一个版本
  • 在同一个文件夹中创建 PhotosController_v1.php
  • 将类名称为 PhotosController_v1 并确保它 extends PhotosController_v0
  • 覆盖您希望更新的任何方法。所有其他方法将调用上一个版本的方法。
  1. 更新您的路由文件。
  • 在您的 routes/api.php 中,要么在顶部包含包(use KirillSimin\Semaphore\VersionedRoute),要么在 app.php 中使用别名
  • Route::apiResource('photos', 'PhotosController'); 替换为 VersionedRoute::apiResource('photos', 'PhotosController')
  1. 调用正确的控制器
  • 该路由接受自定义的 controller-version 标头。如果您没有传递它,它将默认为 _v0。如果您传递一个数字,它将尝试定位正确的控制器版本。