sadovojav / laravel-json-schema-request
Like FormRequests, but for validating against a json-schema
Requires
- php: ^7.4
- illuminate/support: ^7.0
- justinrainbow/json-schema: ^5.2
Requires (Dev)
- orchestra/testbench: ^5.3
- phpunit/phpunit: ^9.2
This package is auto-updated.
Last update: 2024-10-09 00:39:41 UTC
README
Laravels Form Request Validation for JSON Schema documents
Installation
composer require sadovojav/laravel-json-schema-request
Usage
The development experience is identical to Laravel's Form Request Validation, except instead of writing Laravel validation rules, you write a JSON Schema.
You can create a new request using the make:json-request
command
artisan make:json-request MyJsonRequest
You will now have new request class App\Http\Requests\MyJsonRequest
, Below you can see a basic example schema.
<?php namespace App\Http\Requests; use Webtools\JsonSchemaRequest\JsonSchemaRequest; class MyJsonRequest extends JsonSchemaRequest { public function schema(): array { return [ 'type' => 'object', 'properties' => [ 'first_name' => ['type' => 'string'], 'last_name' => ['type' => 'string'], 'email' => ['type' => 'string', 'format' => 'email'], ], 'required' => ['first_name', 'last_name', 'email'], 'additionalProperties' => false, ]; } }
Once you have a JsonSchemaRequest
object, all you need to do is type-hint the request on your controller method.
The incoming form request is validated before the controller method is called.
public function store(MyJsonRequest $request) { // The incoming request is valid... // Retrieve the validated input data... $validated = $request->validated(); }
License
The MIT License (MIT). Please see License File for more information.