1.1.6 • Published 5 years ago

restql v1.1.6

Weekly downloads
11
License
MIT
Repository
github
Last release
5 years ago

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:

QuantifierDescription
[]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! 🌮 🐴 💨

1.1.6

5 years ago

1.1.5

7 years ago

1.1.4

7 years ago

1.1.3

7 years ago

1.1.2

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.2

7 years ago

1.0.1

7 years ago

1.0.0

7 years ago

0.4.6

7 years ago

0.4.5

7 years ago

0.4.4

7 years ago

0.4.3

7 years ago

0.4.2

7 years ago

0.4.1

7 years ago

0.4.0

7 years ago

0.3.4

7 years ago

0.3.3

7 years ago

0.3.2

7 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.9

7 years ago

0.2.8

7 years ago

0.2.7

7 years ago

0.2.6

7 years ago

0.2.5

7 years ago

0.2.4

7 years ago

0.2.3

7 years ago

0.2.2

7 years ago

0.2.1

7 years ago

0.2.0

7 years ago

0.1.11

7 years ago

0.1.10

7 years ago

0.1.9

7 years ago

0.1.8

7 years ago

0.1.7

7 years ago

0.1.6

7 years ago

0.1.5

7 years ago

0.1.4

7 years ago

0.1.3

7 years ago

0.1.2

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago