@home-app/api.module
v2.1.2
Published
This module makes http requests and log every step of it into the store. It has several statuses: Pending, Success, Error, Cancel. All of it except Pending has some data (result or errors). Also each unique request has an id that also stored in the
Downloads
19
Readme
Description
This module makes http requests and log every step of it into the store.
It has several statuses: Pending, Success, Error, Cancel. All of it except Pending has some data (result or errors).
Also each unique request has an id that also stored in the store (as a key of data).
A data structure is following:
{
"pathToApiData": {
"rId0": {
"status": "PENDING"
},
"rId1": {
"status": "SUCCESS",
"data": "raw response data"
},
"rId2": {
"status": "ERROR",
"data": "raw error data"
},
"rId3": {
"status": "CANCEL",
"data": "raw cancel data"
}
}
}
First of all
For correct work of the module it have to be done:
- include the
redux-module-creator
into package.json dependencies (https://www.npmjs.com/package/redux-module-creator) - link the store according RMC documentation
Next step - integrating into the store:
Reducer
You should to import the module into a reducer where you wanna store api data:
import { apiModule } from '@home-app/api.module';
And integrate it into reducers tree:
function someReducer(state = initialState, action) {
return {
modulePath: apiModule.integrator('modulePath')(state, action),
};
}
Middleware
Also, you need to inject the middleware into the store handling cycle
import { middleware } from '@home-app/api.module';
Apply the middleware normally.
API reference
.fetch(url [, options][, adapters])
- url: string
- options: object
-- method: method of the request
-- body: data of the request
-- headers: object with headers - adapters: function or array of functions
Returns request id that is a unique string for each unique request (two equal requests will get same id).
.getPromise(requestId)
Returns a promise for an active request.
.cancelRequest(requestId)
Cancel an active request.
.actions.clear(requestId)
Dispatch an action that makes a reducer to clear all data for a specified request id.