Awesome
got-fetch
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.
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:
- ❌ RequestMode
no-cors
,same-origin
,navigate
- ❌ RequestCache
only-if-cached
- ❌ RequestRedirect
error
,manual
- ❌ response body streaming. See https://github.com/alexghr/got-fetch/issues/25
- ❗ ESM vs CJS packages. See https://github.com/alexghr/got-fetch/issues/70
- ❗ RequestHeaders must be a plain object
- ❗ RequestCache if unset (or
default
) will use got's caching algorithm (any other value will disable caching)
License
See LICENSE for information.