open-solid / open-api-bundle
为 Symfony 全栈框架提供 OpenApi 的紧密集成
v0.1.0
2024-08-09 18:27 UTC
Requires
- php: >=8.2
- symfony/expression-language: ^7.0
- symfony/framework-bundle: ^7.0
- symfony/property-access: ^7.0
- symfony/serializer: ^7.0
- symfony/validator: ^7.0
- zircote/swagger-php: ^4.7
Requires (Dev)
- phpunit/phpunit: ^10.0
- psalm/plugin-phpunit: ^0.18
- roave/security-advisories: dev-latest
- symfony/browser-kit: ^7.0
- vimeo/psalm: ^5.0
Conflicts
- zircote/swagger-php: =4.8.7
README
将著名的 zircote/swagger-php
库紧密集成到 Symfony 全栈框架中,以快速生成 OpenAPI 规范并构建 Restful API。
此包专为 API-First 开发创建。
安装
composer require open-solid/open-api-bundle
在 config/routes.yaml
中导入包的路由以显示 Swagger API 文档
openapi: resource: '@OpenApiBundle/config/routes.php'
基本示例
同时定义 OpenAPI 规范和端点
<?php namespace Api\Catalog\Controller\Post; use Api\Catalog\Model\Product; use OpenSolid\OpenApiBundle\Attribute\Payload; use OpenSolid\OpenApiBundle\Routing\Attribute\Post; class PostProductAction { #[Post('/products')] public function __invoke(#[Payload] PostProductPayload $Payload): Product { return new Product($body->name, $Payload->price); } }
主要功能
- 从 PHP 属性生成 OpenAPI 规范(主要基于
zircote/swagger-php
)- 自动从 PHP 类和方法中猜测
Operation
、Schema
和Property
- 自动从 PHP 类和方法中猜测
- 暴露 Swagger UI 以探索 OpenAPI 规范并测试 API 端点
- 以 JSON 或 YAML 格式导出 OpenAPI 规范(通过 HTTP 和控制台命令)
- 以 JSON 或 YAML 格式导入 OpenAPI 规范(通过配置文件)
- 使用相同的属性定义 Symfony 路由和 OpenAPI 路径
#[Post]
、#[Get]
、#[Put]
、#[Patch]
、#[Delete]
- 条件 OpenAPI 路径/路由定义
- 示例:
#[Get('/me', when: 'service("toggle_me").isEnabled()')]
- 示例:
- Symfony 属性缩写
#[Payload]
替代#[MapRequestPayload]
#[Query]
替代#[MapQueryString]
- OpenAPI 属性缩写
#[Path]
替代#[PathParameter]
#[Param]
替代#[QueryParameter]
- 使用 OpenAPI 属性定义 Symfony 的验证约束
- 示例:
#[Property(minLength: 3, maxLength: 255)]
- 示例:
- 自动控制器响应序列化(默认为 JSON 格式)
- 从 API 规范生成新端点(WIP)(基于
open-solid/open-api-assistant-bundle
)
许可
此软件根据 MIT 许可证 发布