Symfony bundle to validate json api requests and responses based on JSON Schema specification.
It auto validates Requests and Responses for an API with json-schema files that can be auto generated from json body.
JSON Schema is described in its specification as:
JSON Schema is a JSON media type for defining the structure of JSON data. JSON Schema provides a contract for what JSON data is required for a given application and how to interact with it. JSON Schema is intended to define validation, documentation, hyperlink navigation, and interaction control of JSON data.
- Json Schema service for validate jsons
- Listener to auto validate request and responses
- Json Schema file generation from json body (request and responses content)
Composer:
composer require bcastellano/json-schema-bundle
Load the bundle:
<?php
// app/AppKernel.php
use Bcastellano\JsonSchemaBundle\JsonSchemaBundle;
public function registerBundles()
{
$bundles = array(
// ...
new JsonSchemaBundle(),
);
}
This is a complete example of configuration parameters:
json_schema:
# Validator
validator:
# Class to use in validation. Is an enum
class: Bcastellano\JsonSchemaBundle\Validator\JsonSchemaValidator
# To auto register request and response events to auto validate jsons
use_listener: true
# Locator
locator:
# Class to locate schema files
class: Bcastellano\JsonSchemaBundle\Locator\ControllerSchemaFileLocator
# Directory for json schema files (also to save new ones)
resources_dir: '%kernel.root_dir%/Resources/Schemas'
# Configuration for schema generator
generator:
enabled: false
# NOTE: these two configurations are incompatible, you can't configure both
# this use any external command to generate schema from json
command: '/path/to/command {{source_file}} --output {{target_file}}'
# this use any custom service to generate schema from json
service: 'some.custom.service'
This bundle is under the MIT License