Skip to content

ce-brex/laravel-json-api-parser

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JSON API parser for Laravel

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.

Installation

You install the package by using composer:

composer require clintonelec/laravel-json-api-parser

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

License

The Laravel JSON API Parser integration and it's base package are both realted under the [MIT License].

About

Laravel integration for the JSON API parser

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • PHP 100.0%