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).
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.
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.
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');
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 #25
- ❗ ESM vs CJS packages. See #70
- ❗ RequestHeaders must be a plain object
- ❗ RequestCache if unset (or
default
) will use got's caching algorithm (any other value will disable caching)
See LICENSE for information.