bcastellano/json-schema-bundle

Symfony bundle to validate json api request and responses with json-schema

v1.0.1 2016-11-08 00:14 UTC

This package is not auto-updated.

Last update: 2024-04-13 17:30:06 UTC


README

Build Status Coverage Status SensioLabsInsight License

Json-Schema Bundle

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.

Features

  • Json Schema service for validate jsons
  • Listener to auto validate request and responses
  • Json Schema file generation from json body (request and responses content)

Installation

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(),
    );
}

Configuration

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'

License

This bundle is under the MIT License