npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

fetch-api-warpper

v1.1.0

Published

Fetch api wrapper

Downloads

16

Readme

Build Status

Fetch-on-REST is a RESTful API wrapper built around [window.fetch][fetch].

Install the required packages:

# optional (to support older browsers):
npm install --save es6-promise

# required (to add global `fetch` method):
npm install --save isomorphic-fetch

# required (this package):
npm install --save frisbee

Require it, set default options, and make some requests:

// add optional support for older browsers
import es6promise from 'es6-promise';
es6promise.polyfill();

// add required support for global `fetch` method
// *this must always come before `frisbee` is imported*
import 'isomorphic-fetch';

// require the module
import FetchApi from 'fetch-api-warpper';

// create a new instance of Frisbee
const api = new FetchApi({
  baseURI: 'https://api.startup.com',
  headers: {
    'Accept': 'application/json',
    'Content-Type': 'application/json'
  }
});

requestLogin();

async function requestLogin() {

  // log in to our API with a user/pass
  try {

    // make the request
    let res = await api.post('/v1/login');
    console.log('response', res.body);

    // handle HTTP or API errors
    if (res.err) throw res.err;

    // set basic auth headers for all
    // future API requests we make
    api.auth(res.body.api_token);

    // now let's post a message to our API
    res = await api.post('/v1/messages', { body: 'Hello' });
    console.log('response', res.body);

    // handle HTTP or API errors
    if (res.err) throw res.err;

    // now let's get a list of messages filtered by page and limit
    res = await api.get('/v1/messages', {
      body: {
        limit: 10,
        page: 2
      }
    });

    // handle HTTP or API errors
    if (res.err) throw res.err;

    // now let's logout
    res = api.post('/v1/logout');
    console.log('response', res.body);

    // handle HTTP or API errors
    if (res.err) throw res.err;

    // unset auth now since we logged out
    api.auth();

    // for more information on `fetch` headers and
    // how to send and expect various types of data:
    // <https://github.com/github/fetch>

  } catch (err) {
    throw err;
  }

}

API

  • api.jwt(token) - helper function that sets a JWT Bearer header. It accepts the jwt_token as a single string argument
  • List of available HTTP methods:
    • api.get(path, options) - GET
    • api.head(path, options) - HEAD (does not currently work - see tests)
    • api.post(path, options) - POST
    • api.put(path, options) - PUT
    • api.del(path, options) - DELETE
    • api.options(path, options) - OPTIONS (does not currently work - see tests)
    • api.patch(path, options) - PATCH