fetch

Isomorphic modern/legacy/Node polyfill for WHATWG fetch().

This package replaces the http package for HTTP calls. fetch package provides polyfill for the WHATWG fetch specification for legacy browsers or defaults to the global class which is available in modern browsers and Node. It is recommended that you use this package for compatibility with non-modern browsers.

For more information we recommend reading the MDN articles about it as this article covers only basic usage in Meteor.

Usage

Installation

To add this package to an existing app, run the following command from your app directory:

meteor add fetch

To add the fetch package to an existing package, include the statement api.use('fetch'); in the Package.onUse callback in your package.js file:

Package.onUse((api) => {
  api.use('fetch');
});

API

You can import fetch, Headers, Request and Response classes from meteor/fetch.

import { fetch, Headers, Request, Response } from 'meteor/fetch';

For the most part though, you will only need to import fetch and Headers.

import { Meteor } from 'meteor/meteor';
import { fetch, Headers } from 'meteor/fetch';

async function postData (url, data) {
    try {
      const response = await fetch(url, {
          method: 'POST', // *GET, POST, PUT, DELETE, etc.
          mode: 'cors', // no-cors, *cors, same-origin
          cache: 'no-cache', // *default, no-cache, reload, force-cache, only-if-cached
          credentials: 'same-origin', // include, *same-origin, omit
          headers: new Headers({
              Authorization: 'Bearer my-secret-key',
              'Content-Type': 'application/json'
          }),
          redirect: 'follow', // manual, *follow, error
          referrerPolicy: 'no-referrer', // no-referrer, *no-referrer-when-downgrade, origin, origin-when-cross-origin, same-origin, strict-origin, strict-origin-when-cross-origin, unsafe-url
          body: JSON.stringify(data) // body data type must match "Content-Type" header
      });
      const data = await response.json();
      return response(null, data);
    } catch (err) {
      return response(err, null);
    }
}

const postDataCall = Meteor.wrapAsync(postData);
const results = postDataCall('https://www.example.org/statsSubmission', { totalUsers: 55 }));
Edit on GitHub
// search box