@enspirit/magicrest

0.1.0 • Public • Published

magicrest

The goal of this library is to make rest api clients easy and generic.

Usage example

import { createClient } from '@enspirit/magicrest';

const client = createClient('http://localhost');

// GET http://localhost/
await client.get();

// GET http://localhost/people
await client.people.get();

// GET http://localhost/people?filter=value
await client.people.get({ filter: 'value' });

// GET http://localhost/people/12
await client.people(12).get();

// GET http://localhost/people/12/hobbies
await client.people(12).hobbies.get();

// DELETE http://localhost/people/12/hobbies/24
await client.people(12).hobbies(24).delete();

// POST http://localhost/people/12/hobbies
// with body: { name: 'Bass playing' }
await client.people(12).hobbies.post({ name: 'Bass playing' });

// You can create clients with defaults
const authdApi = client.withDefaults({ headers: { Authorization: 'Bearer some-token' }});
await authdApi.my.profile.get();

// Subclients deep merge their settings
const authdApiWithMoreHeaders = authdApi.withDefaults({
  headers: {
    Accept: 'application/xml'
  }
});
await authdApiWithMoreHeaders.finance.reports.year(2022).get();

Close relationship with Promises

It is important to know that magicrest only triggers HTTP request when the Promise API is being used.

This means that http request will only be triggered when one of the following method is being called on magicrest's returned objects:

  • then()
  • catch()
  • finally()

/@enspirit/magicrest/

    Package Sidebar

    Install

    npm i @enspirit/magicrest

    Weekly Downloads

    0

    Version

    0.1.0

    License

    ISC

    Unpacked Size

    14.2 kB

    Total Files

    13

    Last publish

    Collaborators

    • llambeau
    • ygu
    • blambeau
    • david.parloir