randomstate / laravel-api
randomstate/api 与 Laravel 的集成
Requires
- php: >=8.0
- randomstate/api: ^0.5.0
Requires (Dev)
- laravel/laravel: ^8.0
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-09-19 21:21:30 UTC
README
randomstate/api 的 Laravel 集成。
注意,对于无框架的入门级应用,请使用 randomstate/api。您需要做一些重要的配置,以便使其像这个 Laravel 包一样有用。
它做什么
LaravelApi 是一个 API 版本控制包,允许您轻松地命名空间和版本化您的 API(Web、Ajax、REST 等)。它自带对出色的 league/fractal
包的支持和集成。
本质上,这个包允许您标准化 API 的输出,同时保持灵活性;使用命名空间来改变上下文。再加上您可以版本化 API 响应以针对特定用户,这就是构建愉悦 API 体验的开始。
安装和设置
composer require randomstate/laravel-api
将 \RandomState\LaravelApi\LaravelApiServiceProvider::class
添加到您的 app.php 配置文件中。
通过运行以下命令发布配置文件: php artisan vendor:publish --tag=laravel-api
由于需要深度路由集成以实现魔法效果,您需要替换 Http Kernel 为本包提供的。您应该将 app/Http/Kernel.php
类更改为扩展 RandomState\LaravelApi\Http\Kernel
而不是 HttpKernel 默认。
命名空间设置
为了命名空间您的路由,您可以使用 RandomsState\LaravelApi\Http\Middleware\ApiNamespace
中间件类。将以下内容添加到您的 Kernel 类上的 $routeMiddleware
属性。
protected $routeMiddleware = [ 'auth' => \Illuminate\Auth\Middleware\Authenticate::class, // ... 'namespace' => RandomsState\LaravelApi\Http\Middleware\ApiNamespace::class, ];
用法
命名空间
如果您遵循了设置说明,您将添加一个 'namespace' 中间件。您可以使用它如下
Route::group(['middleware' => ['namespace:web'], function() {}); Route::group(['middleware' => ['namespace:web,1.0'], function() {}); // Forces version 1.0 to be used (must be specified in your laravel-api.php config file.
动态版本化
由于此包的预期用途是根据用户的目标版本动态提供 API,我建议以下自动版本化路由的方式:在一个服务提供程序的注册方法中(例如 AppServiceProvider),您可以添加以下内容
$this->app->bind(\RandomState\LaravelApi\VersionSwitch::class, function() { return new class implements \RandomState\LaravelApi\VersionSwitch::class { public function getVersionIdentifier() { return Auth::user()->getApiVersion(); } } });
您必须自己实现存储和 getApiVersion
方法 - 这只是一个示例,说明您应该如何操作。