Create a Drupal 8 JSON API query string from a nested object.
This make it easier to request a Drupal 8 JSON-API site with JSON API module
If you are looking for a complete JS Client for an API-first Drupal 8, you might be interested in waterwheel.js, as it supports JSON API and more.
You may be interested to use it thoses packages in combination with jsonapi-parse to format json responses in a more intuitive way (it resolves nicely included keys and relationships )
To create the following query string :
sort[sortCreated][path]=created&sort[sortCreated][direction]=DESC&fields[recipes]=title&include=tags,image&filter[categoryName][condition][path]=category.name&filter[categoryName][condition][value]=Main%20course&page[offset]=0&page[limit]=4
write:
const buildQueryString = require('d8-jsonapi-querystring').buildQueryString
buildQueryString({
sort: {
sortCreated: {
path: 'created',
direction: 'DESC'
}
},
fields: {
recipes: ['title']
},
include: ['tags', 'image'],
filter: {
categoryName: {
condition: {
path: 'category.name',
value: "Main course"
}
},
},
page: {
offset: 0,
limit: 4
}
})