@aofl/api-request
v3.14.1
Published
A module for simplifying api calls
Downloads
749
Maintainers
Readme
@aofl/api-request
A module for making api calls easier. Key features include caching responses and request/response formatters.
Caching is implemented using @aofl/cache-manager and uses MemoryCache. @aofl/api-request caches the promises created by fetch api.
Request/response formatting refers to constructing a request payload and parsing the response payload. A formatter object should implement pack()
and unpack()
properties. pack()
is to construct the request payload and unpack()
is used to parse the response. Any number of formatters can be added to apiRequestInstance
using the addFromatter()
method. E.g. GetFormatter
, PostFormatter
, CorsFormatter
, FileUploadFormatter
, GoogleMapsFormatter
, ....
Examples
Installation
npm i -S @aofl/api-request
Usage
import {ApiRequest} from '@aofl/api-request';
class PostFormatter {
static pack(payload) {
const headers = new Headers();
const body = new FormData();
if (typeof payload !== 'undefined') {
body.append('arguments', JSON.stringify(payload));
}
return {
method: 'POST',
headers,
body,
mode: 'cors',
credentials: 'include'
};
}
static unpack(response) {
return response.json()
.then((data) => {
if (data.status !== 'success') {
return Promise.reject(data);
}
return data;
});
}
}
const apiRequestInstance = new ApiRequest();
apiRequestInstance.addFormatter('post', PostFormatter);
apiRequestInstance.request('https://example.org/', {}, 'post', true, 'sample-namespace')
.then((jsonResponse) => {
})
.catch((jsonResponse) => {
});