RestQL.js
RESTful API Resolver for Nested-Linked Resources | 🕸 🕷
RestQL allows you to dynamically resolve the nested-linked resources of a RESTful API.
By specifying a set of properties to describe the paths.
Installation
npm
npm install restql --save
Yarn
yarn add restql
CDN
Parameters
resource
{string} The resource to fetch.
Description
Self-explanatory.
e.g.:
'https://pokeapi.co/api/v2/pokemon/1/'
resolver
{Object} The resolver to apply.
Description
At each level, each property describes a path to the nested resources within the current one.
RestQL resolves the sames and call the subsequent resolver against them...
Until the base case (null
) is reached; from which it returns back the merged responses.
Quantifiers
Following is a table of the quantifiers you can use:
Quantifier | Description |
---|---|
[] |
Collection of properties. |
? |
Optional property. |
e.g.:
'abilities[]?.ability.url': 'generation.url': 'main_region.url': null 'stats[].stat.url?': 'affecting_natures.increase[].url': null 'affecting_natures.decrease[].url': null 'moves[].move?.url': null
[options]
{Object} The options to bypass.
Description
e.g.:
// ...
Usage
// External Packages /** * @constant */const resource = 'https://pokeapi.co/api/v2/pokemon/1/' /** * @constant */const resolver = 'abilities[]?.ability.url': 'generation.url': 'main_region.url': null 'stats[].stat.url?': 'affecting_natures.increase[].url': null 'affecting_natures.decrease[].url': null 'moves[].move?.url': null /** * @constant */const options = // ...; async { try const data = await console catch error console }
Roadmap
Support for authenticationSupport for optional resolversImprove package bundlerAbility to cache responses- Support for recursive resolvers
Take 🍰, Folks! 🌮 🐴 💨