lanser / laravel-openapi-generator
使用 spatia Laravel 数据生成 Api Swagger 文档
1.6.5
2024-05-06 05:50 UTC
Requires
- php: ^8.1
- laravel/framework: ^10.48
- phpdocumentor/reflection-docblock: ^5.4
- spatie/invade: ^2.0
- spatie/laravel-data: ^4.6
README
从 Laravel 路由和 Laravel 数据对象生成 OpenAPI 规范
此存储库仅是从原始存储库分叉而来。感谢此人。原始 xolvio/laravel-data-openapi-generator
和此包与 spatie/laravel-data
和 phpdocumentor/reflection-docblock
一起工作
安装
在 composer.json
中添加此存储库
"require": { "lanser/laravel-openapi-generator" : "^1.5" },
并
composer update
版本
在 app.php
中添加一个 app.version
配置,以在 OpenAPI 规范中设置版本
'version' => env('APP_VERSION', '1.0.0'),
用法
配置
php artisan vendor:publish --tag=openapi-generator-config
生成
php artisan openapi:generate
查看
Swagger 可在 APP_URL/api/openapi
查看文档
在您的请求上
use Lanser\LaravelApiGenerator\Request\RequestData; class UserRequest extends RequestData { public function __construct( public string $name, public string $email ) { } public static function rules(ValidationContext $context): array { return [ 'name' => ['required', 'string'], 'email' => ['required', 'email'], ]; } }
在您的资源上
use Lanser\LaravelApiGenerator\Response\ResponseData; class UserResponse extends ResponseData { public function __construct( public string $name, public string $email ) { } }
示例
namespace App\Http\Controllers; use App\Http\Requests\UserRequest; use App\Response\UserResponse; use Illuminate\Foundation\Auth\Access\AuthorizesRequests; use Illuminate\Foundation\Auth\User; use Illuminate\Foundation\Validation\ValidatesRequests; use Illuminate\Routing\Controller as BaseController; class Controller extends BaseController { use AuthorizesRequests, ValidatesRequests; /** * @param UserRequest $request * @return UserResponse */ public function show(UserRequest $request): UserResponse { $user = User::query()->first(); return UserResponse::from($user); } }
最终结果
对于路由分组
Route::group(['as' => 'user'], function () { Route::post('/', [Controller::class, 'show']); });
对于添加认证
Route::group(['as' => 'user'], function () { Route::post('/', [Controller::class, 'show']); })->middleware('auth:sanctum');
如果您想记录错误,可以使用属性 ErrorMessage
use Lanser\LaravelApiGenerator\OpenApi\Attributes\ErrorMessage; #[ErrorMessage(["User not found", "User is not active"])] public function show(UserRequest $request): UserResponse { $user = User::query()->first(); return UserResponse::from($user); }
点击模式,如果您想查看在此路由中存在的异常类型