Skip to content

A bundle integrating swagger to validate Requests and Responses

License

Notifications You must be signed in to change notification settings

Nicofuma/SwaggerBundle

Repository files navigation

NicofumaSwaggerBundle

Latest Stable Version Latest Unstable Version License Travis Build Status SensioLabsInsight Scrutinizer Code Quality Code Coverage

Description

This bundle integrates Swagger in Symfony.

Currently, it supports the following features:

  • Automatic validation of all incoming requests based on the Swagger definition (including headers and query string)
  • Configuring multiple API with different swagger files using configuration
  • FOSRestBundle integration: automatic configuration of the ParamFetcher
  • Behat integration: context to validate the response

Installation

Add the required package using composer.

Stable version

composer require nicofuma/swagger-bundle:^1.0

Bleeding-edge version

composer require nicofuma/swagger-bundle:@dev

Enabling the bundle

Add the bundle to your AppKernel.

// in %kernel.root_dir%/AppKernel.php
$bundles = array(
    // ...
    new Nicofuma\SwaggerBundle\NicofumaSwaggerBundle(),
    // ...
);

Configuration

nicofuma_swagger:
    definition:
        pattern: '/api/v1'
        swagger_file: swagger/swagger.json
        strict: true

pattern any url matching this pattern will be tested against the swagger_file swagger_file swagger file to use for this API. Can be either an bsolute path, a path relative to %kernel.root_dir%/Resources/ or a bundle resource @MyBundle/Dir/swagger.json strict whether or not an exception must be thrown if the path does not match any definition in the swagger file

Configuration reference

# Default configuration for extension with alias: "swagger"
nicofuma_swagger:
    definitions:
        -
            pattern:
                # use the urldecoded format
                path:                 ^/api/public/
                host:                 null
                ips:                  []
                methods:              []
            swagger_file:         swagger-public.json
            strict:               true
        -
            pattern:
                # use the urldecoded format
                path:                 ^/api/private/
                host:                 null
                ips:                  []
                methods:              []
            swagger_file:         swagger-private.json
            strict:               true

Behat integration

Add the following context in your behat.yml file

- Nicofuma\SwaggerBundle\Tests\Behat\Context\SwaggerContext: {map: '@swagger.validator_map'}

Contributing

NicofumaSwaggerBundle is an open source project. If you'd like to contribute, please do.

License

This library is under the MIT license. For the full copyright and license information, please view the LICENSE file that was distributed with this source code.