Drupal JSON:API Client
This package makes manipulating Drupal entities and resources easier via the JSON:API module which is now in Drupal core (8.7.x).
Installation
npm i --save drupal-jsonapi-client
yarn add drupal-jsonapi-client
Usage
ES6 module
UMD
Key features
- Lightweight - HTTP library agnostic, defaults to
axios
(3kb) - Cross platform - works in node.js and the browser
- Drupal specific - abstracts away the nuances of working with Drupal's JSON:API implementation
- Object oriented - leverages ES6 classes to neatly package JSON:API objects
- Familiar - takes inspiration from Drupal's Entity API syntax
It's still in an early stage and contributions are welcome. The general idea is to maintain a base Entity
class which can be extended to provide more context specific uses ie. Article extends Entity
.
Here's some syntax sugar to sink your teeth into that illustrates the vision:
GlobalClientbaseUrl = 'https://www.example.com'GlobalClientsendCookies = true // use this when running code on the same origin as Drupal const doRequest = async { // Update an existing entity const entity = await Entity entitytitle = 'Drupal JSON:API rocks!' // PATCH the existing entity await entity // Create a new entity const newEntity = 'node' 'article' // .setAttribute must be used here as Entity // doesn't know whether title should be // an attribute or a relationship newEntity // Future references to "title" can use .title newEntitytitle = 'We changed the title' // POST the new entity await newEntity}
Examples
For more detailed usage, see the examples.
Environment support
Node.js
node.js >= 6.0.0
Browsers
The library works in all modern browsers.
We bundle regenerator-runtime
and proxy-polyfill
so that the library works out of the box in IE11.