rossaddison / yii-swagger
为Yii框架提供的OpenAPI Swagger
dev-master
2024-06-16 11:35 UTC
Requires
- php: ^8.0
- psr/http-message: ^1.0|^2.0
- psr/http-server-handler: ^1.0
- psr/http-server-middleware: ^1.0
- rossaddison/yii-view: dev-master
- swagger-api/swagger-ui: ^4.1|^5.0
- yiisoft/aliases: ^1.1|^2.0|^3.0
- yiisoft/arrays: ^3.0
- yiisoft/assets: ^2.0|^3.0|^4.0
- yiisoft/cache: ^1.0|^2.0|^3.0
- yiisoft/data-response: ^1.0|^2.0
- yiisoft/html: ^3.0
- zircote/swagger-php: ^4.0
Requires (Dev)
- doctrine/annotations: ^2.0
- httpsoft/http-message: ^1.0
- maglnet/composer-require-checker: ^4.4
- phpunit/phpunit: ^9.5
- rector/rector: ^1.0
- roave/infection-static-analysis-plugin: ^1.16
- spatie/phpunit-watcher: ^1.23
- vimeo/psalm: ^4.30|^5.6
- yiisoft/csrf: ^2.0
- yiisoft/di: ^1.2
- yiisoft/psr-dummy-provider: ^1.0
- yiisoft/test-support: ^3.0
This package is auto-updated.
Last update: 2024-09-16 12:06:57 UTC
README
Yii Swagger
为Yii框架提供的OpenAPI Swagger。
要求
- PHP 8.0或更高版本。
安装
可以使用Composer安装此包
composer require yiisoft/yii-swagger
配置
1. 将路由配置添加到config/routes.php
use Yiisoft\DataResponse\Middleware\FormatDataResponseAsHtml; use Yiisoft\DataResponse\Middleware\FormatDataResponseAsJson; use Yiisoft\Router\Group; use Yiisoft\Router\Route; use Yiisoft\Swagger\Middleware\SwaggerUi; use Yiisoft\Swagger\Action\SwaggerJson; // Swagger routes Group::create('/swagger', [ Route::get('') ->middleware(FormatDataResponseAsHtml::class) ->action(fn (SwaggerUi $swaggerUi) => $swaggerUi->withJsonUrl('/swagger/json-url')), Route::get('/json-url') ->middleware(FormatDataResponseAsJson::class) ->action(SwaggerJson::class), ]),
2. 在默认API控制器中添加注解
use OpenApi\Annotations as OA; /** * @OA\Info(title="My first API", version="1.0") */ class DefaultController { // ... }
以及在动作之前
/** * @OA\Get( * path="/api/endpoint", * @OA\Response(response="200", description="Get default action") * ) */ public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface { // ... }
有关如何对代码进行注解的详细信息,请参阅Swagger-PHP文档
3. 配置SwaggerJson
动作
为了注册注解,您需要配置SwaggerJson
。
您可以使用config/params.php
中的参数来配置SwaggerJson
//... 'yiisoft/yii-swagger' => [ 'annotation-paths' => [ '@src/Controller' // Directory where annotations are used ], 'cacheTTL' => 60 // Enables caching and sets TTL, "null" value means infinite cache TTL. ], //...
4. (可选) 添加别名和资源管理器的配置
use Yiisoft\Definitions\Reference; use Yiisoft\Assets\AssetManager; return [ //... 'yiisoft/aliases' => [ 'aliases' => [ //... '@views' => '@root/views', '@assets' => '@public/assets', '@assetsUrl' => '@baseUrl/assets', ], ], 'yiisoft/view' => [ 'basePath' => '@views', 'defaultParameters' => [ 'assetManager' => Reference::to(AssetManager::class), ] ], //... ];
5. (可选) 配置SwaggerUi
动作
您可以使用config/params.php
中的参数来配置SwaggerUi
。
例如,您可以将persistAuthorization
参数设置为true
以启用授权持久化。
//... 'yiisoft/yii-swagger' => [ 'ui-params' => [ 'persistAuthorization' => true, ], ], //...
您可以通过点击链接找到参数的完整列表。
6. (可选) 配置SwaggerService
您可以在config/params.php
中指定用于生成OpenApi\Annotations\OpenApi
实例的选项,以配置SwaggerService
//... 'yiisoft/yii-swagger' => [ // Default values are specified. 'open-api-options' => [ 'aliases' => OpenApi\Generator::DEFAULT_ALIASES, 'namespaces' => OpenApi\Generator::DEFAULT_NAMESPACES, 'analyser' => null, 'analysis' => null, 'processors' => null, 'logger' => null, 'validate' => true, 'version' => OpenApi\Annotations\OpenApi::DEFAULT_VERSION, ], ], //...
有关生成OpenApi\Annotations\OpenApi
实例的更多信息,请参阅zircote/swagger-php包的文档。
文档
如果您需要帮助或有疑问,Yii论坛是一个不错的选择。您还可以查看其他Yii社区资源。
许可证
Yii Swagger是自由软件。它根据BSD许可证发布。有关更多信息,请参阅LICENSE
由Yii软件维护。