@dnemoga/fetcher v1.3.0
@dnemoga/fetcher
A minimalistic library built around the native Fetch API with zero dependencies.
Getting Started
Installation
npm install @dnemoga/fetcherImporting
import { Fetcher } from '@dnemoga/fetcher';Creating Instance
const fetcher = new Fetcher({ /* Fetcher Options */ });Fetcher Options
These options apply to every request outcoming from the current instance.
mode(defaultcors)credentials(defaultsame-origin)cache(defaultdefault)redirect(defaultfollow)referrerPolicy(defaultstrict-origin-when-cross-origin)
Making Request
fetcher.get('/resource', { /* Request Options */ })
.then(console.log, console.error);| Note: Supported methods are get, head, post, put, patch, and delete.
Request Options
data\ Any body that you want to add to your request. Note that a request using theGETorHEADmethod cannot have a body.params\ Any search parameters you want to add to your request, contained within an object literal with string values.headers\ Any headers you want to add to your request, contained within an object literal with string values. Note that some names are forbidden.integrity\ Contains the subresource integrity value of the request.keepalive\ Thekeepaliveoption can be used to allow the request to outlive the page. Fetch with thekeepaliveflag is a replacement for theNavigator.sendBeacon()API.signal\ AnAbortSignalobject instance; allows you to communicate with a fetch request and abort it if required via anAbortController.
Next Steps
Interceptors
onRequest.use()
const customHeaders = async (request) => {
request.headers.set('X-Foo', 'Foo');
request.headers.set('X-Bar', 'Bar');
return request;
};
fetcher.onRequest.use(customHeaders);onRequest.eject()
fetcher.onRequest.eject(customHeaders);onResponse.use()
const errorHandler = async (response) => {
if (!response.ok) {
throw new Error(response.statusText);
}
return response;
};
fetcher.onResponse.use(errorHandler);onResponse.eject()
fetcher.onResponse.eject(errorHandler);Request Timeout
fetcher.get('/resource', {
signal: AbortSignal.timeout(30000)
});