Download the PHP package coder-sapient/json-api-document-builder without Composer
On this page you can find all versions of the php package coder-sapient/json-api-document-builder. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download coder-sapient/json-api-document-builder
More information about coder-sapient/json-api-document-builder
Files in coder-sapient/json-api-document-builder
Package json-api-document-builder
Short Description Json Api Document Builder
License MIT
Informations about the package json-api-document-builder
Json Api Document Builder
This library resolve Query Object to JSON:API Documents.
Features
- Pagination, sorting, filtering with the following operators (
eq
,neq
,gt
,lt
,gte
,lte
,like
). - Multiple nested paths resource inclusion (e.g.
article, article.author, article.comments.user
). - Async resource inclusion (Guzzle Promises/A+).
- Caching resolved resources.
- Fully Unit tested
Request examples:
Requirements
- PHP version >=8.0
Installation
Use composer to install the package:
Basic Usage
Controller action example:
You can add the following traits to your request classes:
- SingleDocumentRequest: For documents about a single top-level resource.
- DocumentsRequest: For documents about a collection of top-level resources.
SingleDocumentRequest
Method | Description |
---|---|
resourceId() |
Returns the resource id, which should be taken from the URL, for example. |
resourceType() |
Returns the resource type that defines the ResourceResolver |
acceptableIncludes() |
Returns a list of acceptable relationship names to include |
toQuery() |
Returns the SingleDocumentBuilder |
DocumentsRequest
Method | Description |
---|---|
resourceType() |
Returns the resource type that defines the ResourceResolver |
acceptableIncludes() |
Returns a list of acceptable relationship names to include |
acceptableSorting() |
Returns a list of acceptable rows for sorting |
acceptableFilters() |
Returns a list of acceptable filters that can be applied to resource collection |
toQuery() |
Returns the DocumentsBuilder |
Builder
To initialize ResourceCache:
Method | Description |
---|---|
buildIncludes(Includes $includes, ResourceCollection $resources) |
Returns the included collection of resource objects |
SingleDocumentBuilder
The SingleDocumentBuilder extends Builder
:
Method | Description |
---|---|
build(SingleDocumentQuery $query) |
Returns a document with single top-level resource |
DocumentsBuilder
The DocumentsBuilder extends Builder
:
Method | Description |
---|---|
build(DocumentsQuery $query) |
Returns a document with top-level resources |
Resolver
Factory
The ResourceResolver by resource type.
There is a basic implementation InMemoryResourceResolverFactory:
ResourceResolver
The builder use instances of ResourceResolver to find resources by ids or query criteria.
When resolving a collection of top-level resources, it will provide a query criteria consisting of filters, orders, pagination. You need to match criteria with your query builder (Doctrine, Eloquent, etc.).
The builder can accept Guzzle Promises when trying to include related resources and load them async.
PaginationResolver
If the resource resolver implements PaginationResolver, the builder will add top-level Links
and Meta
objects to the resulting document.
ResourceCache
The builder caches all resolved resources using instance of ResourceCache.
There is a basic implementation InMemoryResourceCache. If you don't need caching, use NullableResourceCache.
License
The MIT License (MIT). Please see LICENSE for more information.
All versions of json-api-document-builder with dependencies
ext-json Version *
json-api-php/json-api Version ^2.2
guzzlehttp/promises Version ^1.5