Skip to content

alexghr/got-fetch

Repository files navigation

got-fetch

NPM Release workflow semantic-release: angular npm npm

A fetch-compatible wrapper around got for those times when you need to fetch stuff over HTTP 😉

Why would you use this instead of got? Sometimes you might need a fetch wrapper and this is it (e.g. Apollo uses fetch to query remote schemas).

Before you install

If you're using on NodeJS v18 or greater than you should be using its global fetch. It's better integrated, better supported and has more features.

Native fetch

Install

Support table:

got-fetch version works with got version Notes
^5.0.0 ^12.0.0 ESM package. You have to use import
^4.0.0 ^11.0.0 CJS package. You can use require

got is a peer dependency so you will need to install it alongside got-fetch:

npm install --save got got-fetch

For CommonJS support, we maintain v4 of this package.

Usage

Use the default export:

import fetch from 'got-fetch';

// in ESM we can use top-level await
const resp = await fetch('https://example.com');

console.log(resp.status); // 200
console.log(await resp.text()); // a HTML document

The module also exports a function which allows you to use your own custom got instance:

import got from 'got';
import { createFetch } from 'got-fetch';

const myGot = got.extend({
  headers: {
    'x-api-key': 'foo bar'
  }
});

const fetch = createFetch(myGot);

// this request will send the header `x-api-key: foo bar`
fetch('https://example.com');

Limitations

fetch is designed for browser environments and this package is just a wrapper around a Node-based HTTP client. Not all fetch features are supported:

License

See LICENSE for information.