restql

1.1.6 • Public • Published

RestQL.js

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.

Installation

npm

npm install restql --save

Yarn

yarn add restql

CDN

<script src="https://unpkg.com/restql/dist/umd/index.min.js"></script>

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

Request Config

e.g.:

{
  // ...
}

Usage

// 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)
  }
})()

Test RestQL in your browser.

Roadmap

  • Support for authentication
  • Support for optional resolvers
  • Improve package bundler
  • Ability to cache responses
  • Support for recursive resolvers

Take 🍰, Folks! 🌮 🐴 💨

Versions

Current Tags

VersionDownloads (Last 7 Days)Tag
1.1.60latest

Version History

VersionDownloads (Last 7 Days)Published
1.1.60
1.1.50
1.1.40
1.1.30
1.1.20
1.1.10
1.1.00
1.0.20
1.0.10
1.0.00
0.4.60
0.4.50
0.4.40
0.4.30
0.4.20
0.4.10
0.4.00
0.3.40
0.3.31
0.3.20
0.3.10
0.2.90
0.2.80
0.2.70
0.2.60
0.2.50
0.2.30
0.2.20
0.2.10
0.1.110
0.1.100
0.1.90
0.1.80
0.1.70
0.1.60
0.1.50
0.1.40
0.1.30
0.1.20
0.1.10
0.1.00

Package Sidebar

Install

npm i restql

Weekly Downloads

1

Version

1.1.6

License

MIT

Unpacked Size

860 kB

Total Files

7

Last publish

Collaborators

  • relztic