@jmfetchify/fetchify is a lightweight and flexible HTTP request library for JavaScript/TypeScript applications. It provides simple configuration management, token-based authentication, and supports request and response interceptors. It works seamlessly on both client and server sides.
To install the library, run:
npm install @jmfetchify/fetchify
or
pnpm install @jmfetchify/fetchify
import { Fetchify } from "@jmfetchify/fetchify";
const fetchifyInstance = Fetchify.create({
baseURL: 'https://your-api-url.com',
headers: {}
});
fetchifyInstance.setToken({ token: 'your-auth-token' });
fetchifyInstance.setRequestInterceptor(async (config) => {
const token = localStorage.getItem("accessToken");
if (token) {
config.headers.set("Authorization", `Bearer ${token}`);
}
console.log("Request Interceptor:", config);
return config;
});
// Example GET request
fetchifyInstance.GET({ endpoint: 'users' }).then(response => {
console.log('Users:', response);
}).catch(error => {
console.error('Error fetching users:', error);
});
Sets the authentication token for the requests.
setToken({ token: string })
setRequestInterceptor
Sets a request interceptor to modify the request before it is sent.
setRequestInterceptor(interceptor: (config: Request) => Promise<Request>)
Sets a response interceptor to modify the response before it is returned to the caller.
setResponseInterceptor(interceptor: <T>(response: T) => Promise<T>)
Sends a GET request to the specified endpoint.
GET<T>({ endpoint: string, options?: RequestInit, timeOut?: number })
Sends a POST request to the specified endpoint with the given body.
POST<T>({ endpoint: string, body?: unknown, options?: RequestInit, timeOut?: number })
Sends a PUT request to the specified endpoint with the given body.
PUT<T>({ endpoint: string, body?: unknown, options?: RequestInit, timeOut?: number })
Sends a PATCH request to the specified endpoint with the given body.
PATCH<T>({ endpoint: string, body?: unknown, options?: RequestInit, timeOut?: number })
Sends a DELETE request to the specified endpoint.
DELETE<T>({ endpoint: string, options?: RequestInit, timeOut?: number })
This project is licensed under the MIT License. See the LICENSE file for details.