drpdigital / laravel-json-api-parser
Laravel integration for the jsonapi.org parser
Installs: 1 828
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 4
Forks: 2
Open Issues: 1
Requires
- drpdigital/json-api-parser: ^0.0
- illuminate/container: 5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*
- illuminate/support: 5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*
- illuminate/validation: 5.1.*|5.2.*|5.3.*|5.4.*|5.5.*|5.6.*|5.7.*|5.8.*
Requires (Dev)
- orchestra/testbench: ~3.0
- phpunit/phpunit: 5.7.*|~6.0
README
This is a Laravel framework integration for the JSON API parser.
The JSON API parser allows you to read and validate requests that are structured with the jsonapi.org specification.
Version compatibility
Installation
You install the package by using composer:
composer require drpdigital/laravel-json-api-parser
If you are using Laravel 5.5
onwards the package will automatically register itself.
If you are on Laravel 5.4
or lower then you will need to register the service provider in your config/app.php
'providers' => [ ... \Drp\LaravelJsonApiParser\JsonApiParserServiceProvider::class, ... ]
Documentation
How to validate your resources
When wanting to validate a resource within your payload, you need to give the JsonApiValidator
a ValidatorExecutor
.
This can be done in a few ways specified below. With all of these the first parameter is a string of the type of resource it needs to validate.
So for example if you had a request like:
{ "data": { "id": 1, "type": "user", "attributes": { "name": "Bob" } } }
Then your first parameter would be 'user'
.
Using ::make
$jsonApiValidator = app(JsonApiValidator::class); $jsonApiValidator->validator( 'user', \Drp\LaravelJsonApiParser\Validation\Validator::make( ['name' => 'required'], ['name.required' => 'You must provide a name'] ) );
The rules and messages you provide are whatever Laravel can support as our validator is just a decorated for Laravel's.
Using custom class
When using a custom validator class you will need to extend our validator class \Drp\LaravelJsonApiParser\Validation\Validator
.
You then specify a rules
and messages
function inside the class and return an array of rules and messages in their respective functions.
<?php namespace App\Validators; use Drp\LaravelJsonApiParser\Validation\Validator; class UserValidator extends Validator { public function rules() { return [ 'name' => 'required', ]; } public function messages() { return [ 'name.required' => 'Testing Message', ]; } }
$jsonApiValidator = app(JsonApiValidator::class); $jsonApiValidator->validator( 'user', new UserValidator() );
How to resolve your resources into Models
For more documentation on how to use the JSON API parser please visit the base package's repository.
Sample Usage
The request:
{ "data": { "type": "brochure", "attributes": { "title": "My Brochure", "page_size": "A4" } } }
The handler:
public function store(Request $request) : array { $collection = json_api() ->resolver('brochure', function (array $data) { return Brochure::create($data); })->parse($request->json()->all()); }
Contributing
Raise any issues or feature requests within GitHub and please follow our guidelines when contributing.
If you have found a security vulnerability with the package please email Chris directly at chris.normansell@drpgroup.com
License
The Laravel JSON API Parser integration and it's base package are both realted under the [MIT License].