🔗 Query Fetch
Lightweight and Easy-to-Use Fetch API Extension Library.
English
•
한국어
What is Query Fetch?
Handling Promise objects can be quite challenging. When using Promises for asynchronous processing, complex structures can arise, and error handling can become tricky. This is especially true when processing multiple asynchronous requests sequentially or in parallel, which can degrade code readability and maintainability.
Additionally, the Fetch API often lacks necessary features or requires manual implementation. You may need to handle tasks such as retrying failed requests, refreshing authentication tokens, logging requests and responses, and canceling requests. Repeating the same settings for each request can also be tedious.
To address these issues, Query Fetch was created. Reduce the burden of network communication and focus on your core logic!
Features
- Instance Management: Query Fetch allows you to create multiple instances, each with different settings. This makes it easy to manage integrations with various API endpoints or services.
- Request and Response Logging: Logs all requests and responses for easier debugging and monitoring.
- Automatic Retries: Automatically retries requests in case of network errors or server issues.
- Request Cancellation: Provides the ability to cancel unnecessary requests.
- Token Management: Automatically refreshes authentication tokens when they expire and retries the request.
- Type Safe: Fully supports TypeScript, ensuring accurate type inference and minimizing unnecessary types.
Installation
Query Fetch is available on npm. You can install it using the following commands.
npm i @gwansikk/query-fetch
yarn add @gwansikk/query-fetch
Usage
[!IMPORTANT]
Query Fetch is currently in development. The provided API is subject to change.
Instance
const queryFetch = createQueryFetch({
key: 'INSTANCE',
baseURL: 'https://jsonplaceholder.typicode.com',
});
server.get({ url: 'posts/1' }).then((data) => console.log(data));
Interceptor
const queryFetch = createQueryFetch({
key: 'INTERCEPTOR',
baseURL: 'https://jsonplaceholder.typicode.com',
interceptors: {
request: (request) => {
console.log('** request interceptor **');
request.headers = {
...request.headers,
Authorization: 'Bearer YOUR_ACCESS_TOKEN',
};
return request;
},
response: (response) => {
console.log('** response interceptor **');
return response;
},
error: (response) => {
console.log('** error interceptor **');
return response;
},
},
});
Roadmap
Here is the roadmap for the official release (v1.0.0):
Contributing
We welcome contribution from everyone in the community. Read below for detailed contribution guide.
CONTRIBUTING.md
License
For more details, please refer to the LICENSE.
MIT © gwansikk