JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 23
  • Score
    100M100P100Q56734F
  • License MIT

A wrapper for isomorphic fetch

Package Exports

  • howard

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (howard) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Howard The Duck

NPM

Build Status

CircleCI

Coverage Status

howard

I simplify life! If you are on a project that requires a lot of api Calls I can just handle the data retrieval in a quick and efficient manner! Set a simple config file of the base URL and start making easier REST calls!

Howard is basically a factory function for an isomorphic-fetch call that extracts JSON and returns it as a promise. Do whatever you want with the Promise, tag it in a chain.....tap it and use the results? Make what you need to happen with it!

Examples!!!!

Including Howard:

import howard, { withDefaults, json, text, arrayBuffer, blob, formData, buffer} from 'howard';
json(howard('https://swapi.co/api/people/1/'))
  .then((res) => {
    /*
      {
        "name": "Luke Skywalker",
        ...
      }
    */
  })

Need Query Strings? put them in manually, or pass a param object!

const paramString = '?format=wookiee';
json(howard(`https://swapi.co/api/people/1${paramString}`, { method: 'GET' }))
  .then((res) => {
    /*
      {
        "whrascwo": "Lhuorwo Sorroohraanorworc",
        "acwoahrracao": "172",
        "scracc": "77",
        ...
      }
    */
  })

Using a param:

  json(howard('https://swapi.co/api/people/1', { method: 'GET', params: { format: 'wookiee' } }))
    .then((res) => {
      return res;
  })

If you need to set up a client with a default configuration, use the withDefaults method and specify a config object that gets merged with options for every request. In this example we also use async await:

const api = withDefaults(config);

json(api('/people/1/'))
  .then((res) =>{
    console.log('res', res)
  })

async function withDefaultsRequest() {
  let response = await json(api('/people/1/', { method: 'GET'}));
  return response;
    /*
      {
        "name": "Luke Skywalker",
        ...
      }
    */
}

withDefaultsRequest();

A Highly Opinionated Setup - The goal of this setup would to create a lib style setup and return the fetch with the assumption that most of the app is going to be delivering JSON. This would apply to almost all use cases.

import { withDefaults, json } from 'howard';

const api = withDefaults({
  url: 'http://api.url.com',
});

export function apiFetch(path, options = {}) {
  return json(api(path, options));
}