alireza-h / php-openapi
PHP Open Api 生成器
0.3.0
2023-01-22 10:05 UTC
Requires
- php: ^7.4|^8.0
- ext-json: *
- fakerphp/faker: ^1.21.0
This package is auto-updated.
Last update: 2024-09-22 14:16:17 UTC
README
安装
独立
-
克隆项目
-
在项目根目录运行
composer update
-
将
src/Document
目录作为示例,创建自己的OpenApiOperationGenerator
和OpenApiDocumentGenerator
OpenApiOperationGenerator
负责生成 Open API 操作,而OpenApiDocumentGenerator
负责生成 Open API JSON 文档。每个OpenApiOperationGenerator
的公共方法生成一个 Open API 操作(使用反射)。 -
在项目根目录运行
php -S localhost:8001
- 在浏览器中打开
http://loclahost:8001
以查看 Open API JSON 文档 - 在浏览器中打开
http://loclahost:8001?swagger
以查看 Open API Swagger UI
- 在浏览器中打开
现有项目的依赖
-
安装包
composer require alireza-h/php-openapi
-
将
src/Document
目录作为示例,创建自己的OpenApiOperationGenerator
和OpenApiDocumentGenerator
除了使用
OpenApiDocumentGenerator
,您还可以创建自己的OpenApiBuilder
对象并将OpenApiOperation
添加到构建器对象。OpenApiBuilder::openapi() ->info( [ 'title' => 'API', 'description' => 'API Description', 'version' => '1.0.0' ] ) ->server( [ 'url' => '{scheme}://{host}/{base_path}', 'variables' => [ 'scheme' => [ 'enum' => [ 'http', 'https' ], 'default' => 'http' ], 'host' => [ 'default' => 'localhost:8000' ], 'base_path' => [ 'default' => 'api' ], ] ] ) ->component( 'securitySchemes', 'bearerAuth', [ 'type' => 'http', 'scheme' => 'bearer', 'bearerFormat' => 'JWT', ] ) ->security( [ 'bearerAuth' => [] ] ) ->operation( OpenApiOperation::post('/auth/signup') ->tags(['Auth']) ->summary('Signup') ->description('Signup description') ->requestBody( OpenApiRequestBody::create() ->properties( [ [ 'name' => 'email', 'type' => 'string', 'format' => 'email', 'example' => 'email@example.com', 'description' => 'Email', ], ... ] ) ->mediaTypeMultipartFormData() ) ->response( OpenApiResponse::create() ->example( [ 'data' => [], 'message' => null ] ) ) ) ->operation( OpenApiOperation::put('/auth/confirm') ->tags(['Auth']) ->summary('ConfirmSignup') ->description('Confirm signup description') ->requestBody( OpenApiRequestBody::create() ->properties( [ [ 'name' => 'email', 'type' => 'string', 'format' => 'email', 'example' => 'email@example.com', 'description' => 'Email', ], [ 'name' => 'code', 'example' => 12345, ] ] ) ->mediaTypeXWwwFormUrlencoded() ) ->response( OpenApiResponse::create() ->example( [ 'data' => [], 'message' => null ] ) ) ) ->docs();
-
创建自己的自定义路由以服务 Open API JSON 文档和 Swagger UI