Skip to content

👷‍♀️ A PHP Library to handle the request or response body from a JSON API server.

License

Notifications You must be signed in to change notification settings

Art4/json-api-client

Repository files navigation

JsonApiClient

Latest Version Software License Build Status Coverage Status Total Downloads

JsonApiClient 👷‍♀️ is a PHP Library to validate and handle the response body from a JSON API Server.

Format: JSON API 1.0

🏁 Goals

  • ✔️ Be 100% JSON API spec conform
  • ✔️ Be open for new spec versions
  • ✔️ Handle/validate a server response body
  • ✔️ Handle/validate a client request body
  • ✔️ Offer an easy way to retrieve the data
  • ✔️ Allow extendability and injection of classes/models

📦 Install

Via Composer

$ composer require art4/json-api-client

🚀 Usage

See the quickstart guide or the documentation.

Using as parser

use Art4\JsonApiClient\Exception\InputException; use Art4\JsonApiClient\Exception\ValidationException; use Art4\JsonApiClient\Helper\Parser; // The Response body from a JSON API server $jsonapiString = '{"meta":{"info":"Testing the JsonApiClient library."}}'; try { // Use this if you have a response after calling a JSON API server $document = Parser::parseResponseString($jsonapiString); // Or use this if you have a request to your JSON API server $document = Parser::parseRequestString($jsonapiString); } catch (InputException $e) { // $jsonapiString is not valid JSON } catch (ValidationException $e) { // $jsonapiString is not valid JSON API }

Note: Using Art4\JsonApiClient\Helper\Parser is just a shortcut for directly using the Manager.

$document implements the Art4\JsonApiClient\Accessable interface to access the parsed data. It has the methods has($key), get($key) and getKeys().

// Note that has() and get() have support for dot-notated keys if ($document->has('meta.info')) { echo $document->get('meta.info'); // "Testing the JsonApiClient library." } // you can get all keys as an array var_dump($document->getKeys()); // array( // 0 => "meta" // )

Using as validator

JsonApiClient can be used as a validator for JSON API contents:

use Art4\JsonApiClient\Helper\Parser; $wrong_jsonapi = '{"data":{},"meta":{"info":"This is wrong JSON API. `data` has to be `null` or containing at least `type` and `id`."}}'; if ( Parser::isValidResponseString($wrong_jsonapi) ) { // or Parser::isValidRequestString($wrong_jsonapi) echo 'string is valid.'; } else { echo 'string is invalid json api!'; } // echoes 'string is invalid json api!'

Extend the client

Need more functionality? Want to directly inject your model? Easily extend JsonApiClient with the Factory.

🔊 Changelog

Please see CHANGELOG for more information what has changed recently.

✅ Testing

$ phpunit

🔧 Contributing

Please feel free to fork and sending Pull Requests. This project follows Semantic Versioning 2 and PSR-2.

❤️ Credits

📄 License

GPL3. Please see License File for more information.

About

👷‍♀️ A PHP Library to handle the request or response body from a JSON API server.

Topics

Resources

License

Stars

Watchers

Forks

Contributors 5

Languages