RESTful API Resolver for Nested-Linked Resources | ๐ธ ๐ท
npm build maintainability coverage code style
RestQL allows you to dynamically resolve the nested-linked resources of a RESTful API.
By specifying a set of properties to describe the paths.
npm install restql --save
yarn add restql
<script src="https://unpkg.com/restql/dist/umd/index.min.js"></script>
{string} The resource to fetch.
Description
Self-explanatory.
e.g.:
'https://pokeapi.co/api/v2/pokemon/1/'{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, }
{Object} The options to bypass.
Description
e.g.:
{ // ... }
// External Packages import restql from 'restql' /** * @constant {string} resource The resource to fetch. */ const resource = 'https://pokeapi.co/api/v2/pokemon/1/' /** * @constant {Object} resolver The resolver to apply. */ 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 {Object} options The options to bypass. */ const options = { // ... }; (async () => { try { const data = await restql(resource, resolver, options) console.log(data) } catch (error) { console.error(error.message) } })()
(ๅ้ค) Support for authentication (ๅ้คใใใพใง)(ๅ้ค) Support for optional resolvers (ๅ้คใใใพใง)(ๅ้ค) Improve package bundler (ๅ้คใใใพใง)(ๅ้ค) Ability to cache responses (ๅ้คใใใพใง)- Support for recursive resolvers
Take ๐ฐ, Folks! ๐ฎ ๐ด ๐จ