https://github.com/lifeomic/axios-fetch
A WebAPI Fetch implementation backed by an Axios client
https://github.com/lifeomic/axios-fetch
axios fetch-api team-infra
Last synced: about 2 months ago
JSON representation
A WebAPI Fetch implementation backed by an Axios client
- Host: GitHub
- URL: https://github.com/lifeomic/axios-fetch
- Owner: lifeomic
- License: mit
- Created: 2018-02-13T23:00:55.000Z (over 7 years ago)
- Default Branch: master
- Last Pushed: 2024-11-18T23:00:41.000Z (7 months ago)
- Last Synced: 2025-05-07T05:03:48.732Z (about 2 months ago)
- Topics: axios, fetch-api, team-infra
- Language: TypeScript
- Size: 1.08 MB
- Stars: 174
- Watchers: 22
- Forks: 31
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Axios-Fetch
[](https://www.npmjs.com/package/@lifeomic/axios-fetch)
[](https://github.com/lifeomic/axios-fetch/actions/workflows/release.yaml)
[](https://coveralls.io/github/lifeomic/axios-fetch?branch=master)
This library exposes a Fetch WebAPI implementation backed by an Axios client
instance. This allows a bridge between projects that have pre-configured Axios
clients already to other libraries that require Fetch implementations.## Global Response object
It is expected that the global Response object will be available. For testing we use the [node-fetch
](https://www.npmjs.com/package/node-fetch) library.```typescript
import { Response } from 'node-fetch';
// @ts-expect-error node-fetch doesn't exactly match the Response object, but close enough.
global.Response = Response;
```## Example
One library that wants a Fetch implementation is the [Apollo Link
HTTP](https://www.apollographql.com/docs/link/links/http.html) library. If your
project has an existing Axios client configured, then this project can help you
use that client in your apollo-link-http instance. Here is some sample code:```javascript
const { buildAxiosFetch } = require("@lifeomic/axios-fetch");
const { createHttpLink } = require("apollo-link-http");
const link = createHttpLink({
uri: "/graphql",
fetch: buildAxiosFetch(yourAxiosInstance)
});
```## Transforming requests
It is possible to transform requests before they reach your Axios client by providing
an optional argument to `buildAxiosFetch`. For example, if you wanted a fetch implementation
that always set the request timeout to 1 second, you could use code like:```javascript
const { buildAxiosFetch } = require("@lifeomic/axios-fetch");
const fetch = buildAxiosFetch(yourAxiosInstance, function (config) {
config.timeout = 1000;
return config;
});
```## Support for IE11
To Support IE11 add following dependencies
```
npm install --save isomorphic-fetch
npm install --save es6-promise
```After adding these dependencies import in index.jsx file at top (Need to import before React)
```javascript
import * as es6Promise from 'es6-promise';
import 'isomorphic-fetch';es6Promise.polyfill(); // below all import end
```