Provides a tight integration of the famous zircote/swagger-php library into the Symfony full-stack framework for generating
OpenAPI spec and building Restful APIs quickly.
This bundle is especially created for API-First development.
composer require open-solid/open-api-bundleImport the bundle's routes in config/routes.yaml to show the Swagger API documentation:
openapi:
    resource: '@OpenApiBundle/config/routes.php'Define your OpenAPI spec and endpoint at the same time:
<?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($payload->name, $payload->price);
    }
}-  Generate OpenAPI spec from PHP attributes (Mainly based on zircote/swagger-php)- Automatic Operation,SchemaandPropertyguessing from PHP classes and methods
 
- Automatic 
- Expose Swagger UI to explore the OpenAPI spec and test API endpoints
- Export OpenAPI spec in JSON or YAML format (via HTTP and console command)
- Import OpenAPI spec in JSON or YAML format (via config file)
-  Define Symfony routes and OpenAPI Paths using the same attributes:
- #[Post],- #[Get],- #[Put],- #[Patch],- #[Delete]
 
-  Conditional OpenAPI Path/Route definition:
- Example: #[Get('/me', when: 'service("toggle_me").isEnabled()')]
 
- Example: 
-  Symfony attributes abbreviations:
- #[Payload]instead of- #[MapRequestPayload]
- #[Query]instead of- #[MapQueryString]
 
-  OpenAPI attributes abbreviations:
- #[Path]instead of- #[PathParameter]
- #[Param]instead of- #[QueryParameter]
 
-  Symfony's validation constraints definition using OpenAPI attributes:
- Example: #[Property(minLength: 3, maxLength: 255)]
 
- Example: 
- Automatic controller response serialization (JSON format by default)
-  Generate new endpoints from API spec (WIP) (based on open-solid/open-api-assistant-bundle)
This software is published under the MIT License