Download the PHP package czim/laravel-jsonapi without Composer
On this page you can find all versions of the php package czim/laravel-jsonapi. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download czim/laravel-jsonapi
More information about czim/laravel-jsonapi
Files in czim/laravel-jsonapi
Package laravel-jsonapi
Short Description Laravel JSON-API Base.
License MIT
Homepage https://github.com/czim
Informations about the package laravel-jsonapi
JSON-API Base
Basic application elements for JSON-API projects.
Offers means for quickly scaffolding JSON-API compliance for Laravel applications.
This does NOT provide the means to set up the API or the means for user authorisation.
Disclaimer
This is very much a work in progress at this time. Interface- and other breaking changes may happen.
The old, discontinued version of this project is in the 0.9.5 branch.
Version Compatibility
| Laravel | Package |
|---|---|
| 5.3 | 1.3 |
| 5.4 to 5.6 | 1.4 |
| 5.7 to 6.0 | 1.5 |
Note that version 1.5+ requires PHP 7.1.3+ and czim/laravel-dataobject 2.0+.
Changelog
View the changelog.
Installation
Via Composer
Add the JsonApiServiceProvider to your config/app.php:
Publish the configuration file.
Exceptions
In your App\Exceptions\Handler, change the render() method like so:
This will render exceptions thrown for all JSON-API (and JSON) requests as JSON-API error responses.
Middleware
To enforce correct headers, add the Czim\JsonApi\Http|Middleware\JsonApiHeaders middleware
to the middleware group or relevant routes. You can do this by adding it to your App\Http\Kernel class:
Note that this will block access to any consumers of your API that do not conform their HTTP header use to the JSON-API standard.
Documentation
Request Data
Request Query String Data
JSON-API suggests passing in filter and page data using GET parameters, such as:
This package offers tools for accessing this information in a standardized way:
Using the jsonapi_query() global helper function.
This returns the singleton instance of Czim\JsonApi\Support\Request\RequestParser.
You can ofcourse also instantiate the request parser yourself to access these methods:
Request Body Data
For PUT and POST requests with JSON-API formatted body content, special FormRequests are provided to validate
and access request body data: \Czim\JsonApi\Http\Requests\JsonApiRequest.
For POST requests where id may be omitted while creating a resource, use \Czim\JsonApi\Http\Requests\JsonApiRequest instead.
These classes may be extended and used as any other FormRequest class in Laravel.
There are also a global help functions jsonapi_request() and jsonapi_request_create(),
that returns an instance of the relevant request class (and so mimics Laravel's request()).
Using this approach guarantees that requests are valid JSON-API by validating the input against a JSON Schema.
The request data tree for a single-resource request:

For more information on the data object tree, see the Data classes.
Encoding
This package offers an encoder to generate valid JSON-API output for variable input content.
With some minor setup, it is possible to generate JSON output according to JSON-API specs for Eloquent models and errors.
Eloquent models, single, collected or paginated, will be serialized as JSON-API resources.
More information on encoding and configuring resources.
Custom Encoding & Transformation
To use your own transformers for specific class FQNs for the content to be encoded, map them in the jsonapi.transform.map
configuration key:
This mapping will return the first-matched for content using is_a() checks.
More specific matches should be higher in the list.
As a last resort, you can always extend and/or rebind the Czim\JsonApi\Encoder\Factories\TransformerFactory
to provide your own transformers based on given content type.
Contributing
Please see CONTRIBUTING for details.
Credits
- Coen Zimmerman
- All Contributors
License
The MIT License (MIT). Please see License File for more information.
All versions of laravel-jsonapi with dependencies
czim/laravel-dataobject Version ^2.0
myclabs/php-enum Version ^1.5
doctrine/dbal Version ^2.5
justinrainbow/json-schema Version ^5.2