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).
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.