Axios driver

Introduction

Choose axios driver is if you like using axios library to make AJAX requests. If you know axios, you already know how to use it as the driver.

Installation

First, install the driver:

$ npm install @redux-requests/axios

or you can just use CDN: https://unpkg.com/@redux-requests/axios.

You also need to install axios:

$ npm install axios

Usage

Before you can use axios driver, first pass it to handleRequests:

import 'axios' from axios;
import { handleRequests } from '@redux-requests/core';
import { createDriver } from '@redux-requests/axios';
handleRequests({
driver: createDriver(axios),
});

As you can see, createDriver accepts just one argument, an axios instance. You can pass just axios here, but you can also pass a configured instance, for example createDriver(axios.create({ baseURL: 'https://some-domain.com/api/' }))

Then, you can start using it by just using axios config in your requests actions. For example:

axios({
url: '/users/1',
method: 'delete',
});

should be translated to this request action:

const deleteUser = id => ({
type: 'DELETE_USER',
request: {
url: `/users/${id}`,
method: 'delete',
},
});

The point is, you can use the same request config like you do with pure Axios. That's all there is to it. For any options just refer to axios docs.

Extra response attributes

axios driver supports headers and status attributes inside response (next to data).

Progress event support

axios driver supports ProgressEvent. All you need to do is to add meta.measureDownloadProgress or meta.measureUploadProgress to a request action and you could access downloadProgress or uploadProgress values from selectors like getQuery or getMutation.

Last updated on by Konrad