mittwald/psr7-validation

PSR-7 middleware for JSON schema validation


Keywords
json-schema-validator, middleware, php, php-library, psr, psr-7
License
MIT

Documentation

PSR-7 validation middlewares

Build Status

Synposis

This package contains a PSR-7 middleware for validating HTTP requests, especially using JSON schema validation.

Warning: This package is still under development; its API can change at any time without notice. Use at own risk.

License

This package is MIT-licensed.

Examples

Validating request bodies using a JSON schema (using the Slim framework):

$app->post('/customers', $handler)
    ->add(new ValidationMiddleware(
        Factory::buildJsonValidatorFromUri('path/to/json-schema.json')
    ));

Validating request bodies using a Swagger specification file:

$app->post('/customers', $handler)
    ->add(new ValidationMiddleware(
        Factory::buildJsonValidatorFromSwaggerDefinition('path/to/swagger.json', 'MyType')
    ));

Validating request bodies using a custom validator (using PHP 7's anonymous classes, for no other reason because I can):

$app->post('/customers', $handler)
    ->add(new ValidationMiddleware(
        new class implements ValidatorInterface {
            public function validateJson($jsonDocument, ValidationResult $result) {
                $result->addErrorForProperty('customernumber', 'Foo');
            }
        }
    ));

Combining multiple validators:

$app->post('/customers', $handler)
    ->add(new ValidationMiddleware(
        new CombinedValidator(
            Factory::buildJsonValidatorFromUri('path/to/schema.json'),
            new MyVerySpecialCustomValidator()
        )
    ));