api-wrappy

1.0.8 • Public • Published

Uniwrap

Install

npm install --save api-wrappy

Define

// contentType is for the Request header's 'Content-Type'
// responseType is for the Response header's 'Content-Type'
// cf: https://developer.mozilla.org/en-US/docs/Web/API/Response#Methods
// works for fetch or any other http client
const def = {
  basePath: 'http://api.example.com',
  prefix: '/v0', // not required
  routes: {
    'getUser': { // call name
      uri: '/user/:id', // :id auto processed by 'call' and it's parameters
      method: 'get',
      responseType: 'json',
    },
    'createUser': {
      uri: '/user',
      method: 'post',
      contentType: 'application/xml', // I know xml sucks, it's just an example
      responseType: 'json',
    },
    ...
  },
};

Instantiate

// app.config.js
import Wrappy from 'api-wrappy'; // wrapper inside node_modules

import def from './def.js';

const wrapper = new Wrappy(def);
// OR directly define, whatever
const wrapper = new Wrappy({...});

export default wrapper;

Use

import wrapper from './app.config.js';

async function apiCalls() {
  try {
    wrapper.call('getUser', {id: 24}).then((user) => {
      ...
    });
  } catch (err) {
    // handle error
    console.log('Error: ', err);
  }
  // OR
  wrapper.call('getUser', {id: 24}) // still works as async returns a promise
  .then((user) => {...})
  .catch((e) => {
    // handle not found or whatever
    console.log('Error: ', err);
  });
  // OR
  try {
    const user = await wrapper.call('getUser', {id: 24});
    const userList = await wrapper.call('createUser', {
      headers: {Authorization: 'Bearer <ANiceToken>'},
      body: {name: 'Foo'},
    });
    //OR
    const ret = wrapper.callMultiple([
      wrapper.call('getUser', {id: 24}),
      wrapper.call('createUser', {...}),
      ...
    ]); // ret = [response for getUser, response for createUser, ...]; <- Very powerful
  } catch(err) {
    console.log('Error: ', err); // Errors are caught, allelujah!
  }
}

Readme

Keywords

none

Package Sidebar

Install

npm i api-wrappy

Weekly Downloads

4

Version

1.0.8

License

MIT

Last publish

Collaborators

  • ganitzsh