Skip to content

Abstract client-side php implementation of the json api specification (jsonapi.org)

License

Notifications You must be signed in to change notification settings

eosnewmedia/JSON-API-Client

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
Philipp Marien
Mar 25, 2020
e0b4bef · Mar 25, 2020

History

32 Commits
Mar 25, 2020
Aug 29, 2019
Jul 5, 2017
Aug 29, 2019
Jun 29, 2017
Aug 29, 2019
Jun 29, 2017
Aug 29, 2019
Aug 29, 2019
Jun 29, 2017

Repository files navigation

JSON API Client

Build Status

Abstract client-side PHP implementation of the json api specification.

Installation

composer require enm/json-api-client

It's recommended to install kriswallsmith/buzz as http-client and nyholm/psr7 for http factories.

composer require kriswallsmith/buzz nyholm/psr7

You can also use any HTTP client which implements PSR-18.

Usage

First you should read the docs at enm/json-api-common where all basic structures are defined.

Your API client is an instance of Enm\JsonApi\Client\JsonApiClient, which requires a PSR-18 HTTP client (Psr\Http\Client\ClientInterface) to execute requests.

$client = new JsonApiClient(
    'http://example.com/api',
    $httpClient, // instance of Psr\Http\Client\ClientInterface
    $uriFactory, // instance of Psr\Http\Message\UriFactoryInterface
    $requestFactory, // instance of Psr\Http\Message\RequestFactoryInterface
    $streamFactory, // instance of Psr\Http\Message\StreamFactoryInterface
    new Serializer(),
    new Deserializer()
);

$request = $client->createGetRequest(new Uri('/myResources/1')); // will fetch the resource at http://example.com/api/myResources/1
$request->requestInclude('myRelationship'); // include a relationship

$response = $client->execute($request);

$document = $response->document();
$myResource = $document->data()->first(); // the resource fetched by this request
$myIncludedResources = $document->included()->all(); // the included resources fetched with the include parameter