json-api
json-api copied to clipboard
Implementation of JSON API in PHP
JSON API spec implemented in PHP 7. Immutable
The goal of this library is to ensure strict validity of JSON API documents being produced.
JSON:
{
"data": {
"type": "articles",
"id": "1",
"attributes": {
"title": "Rails is Omakase"
},
"relationships": {
"author": {
"data": {
"type": "people",
"id": "9"
},
"links": {
"self": "/articles/1/relationships/author",
"related": "/articles/1/author"
}
}
}
}
}
PHP:
<?php
use JsonApiPhp\JsonApi\Attribute;
use JsonApiPhp\JsonApi\DataDocument;
use JsonApiPhp\JsonApi\Link\RelatedLink;
use JsonApiPhp\JsonApi\Link\SelfLink;
use JsonApiPhp\JsonApi\ResourceIdentifier;
use JsonApiPhp\JsonApi\ResourceObject;
use JsonApiPhp\JsonApi\ToOne;
echo json_encode(
new DataDocument(
new ResourceObject(
'articles',
'1',
new Attribute('title', 'Rails is Omakase'),
new ToOne(
'author',
new ResourceIdentifier('author', '9'),
new SelfLink('/articles/1/relationships/author'),
new RelatedLink('/articles/1/author')
)
)
),
JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES
);
Installation
composer require json-api-php/json-api
Documentation
First, take a look at the examples. All of them are runnable.
- Simple Document (the same as above)
- Extensive Compound Document
The library API and use-cases are expressed in a comprehensive suite of tests.
- Data Documents (containing primary data)
- with a single Resource Object
- with a single Resource Identifier
- with null data
- with multiple Resource Objects
- with multiple Resource Identifiers
- with a new Resource (no id)
- Compound Documents
- Error Documents
- Meta Documents (containing neither data nor errors)
- Pagination
- Link Objects
- JSON API Object
- Meta Objects