@zarc/fetch-kit
v1.0.0
Published
  
Readme
@gildembergleite/fetch-kit
A TypeScript library for building and managing HTTP requests with ease. This library provides a flexible and extensible way to interact with APIs using a BaseApi class and customizable HttpClient implementations.
Features
- Simple and flexible API for making HTTP requests (GET, POST, PATCH, DELETE).
- Customizable HTTP client (default is
fetch). - URL construction with query parameters.
- Default headers management.
- Error handling for HTTP requests.
Installation
You can install the library via npm:
npm install @gildembergleite/fetch-kitUsage
Basic Setup
Here’s how you can set up and use the BaseApi class with the default FetchHttpClient:
import { BaseApi } from '@gildembergleite/fetch-kit';
import { FetchHttpClient } from '@gildembergleite/fetch-kit';
const api = new BaseApi({
baseURL: 'https://api.example.com',
defaultHeaders: {
'Content-Type': 'application/json',
},
httpClient: new FetchHttpClient(),
});
// Making a GET request
api.get('/endpoint').then(response => {
console.log(response);
}).catch(error => {
console.error('Request failed', error);
});
// Making a POST request
api.post('/endpoint', {
body: { key: 'value' },
}).then(response => {
console.log(response);
}).catch(error => {
console.error('Request failed', error);
});Available Methods
The BaseApi class provides the following methods for making HTTP requests:
get<T>(endpoint: string, options?: RequestOptions): Promise<T>: Makes a GET request to the specified endpoint.post<T>(endpoint: string, options?: RequestOptions): Promise<T>: Makes a POST request to the specified endpoint.patch<T>(endpoint: string, options?: RequestOptions): Promise<T>: Makes a PATCH request to the specified endpoint.delete<T>(endpoint: string, options?: RequestOptions): Promise<T>: Makes a DELETE request to the specified endpoint.
URL Parameters
You can pass query parameters to the get, post, patch, and delete methods using the params option:
api.get('/endpoint', {
params: { search: 'query', page: 1 }
}).then(response => {
console.log(response);
});Custom HTTP Client
By default, the library uses the native fetch API, but you can implement and use your own HTTP client by following the HttpClient interface:
import { HttpClient, RequestOptions } from '@gildembergleite/fetch-kit';
class CustomHttpClient implements HttpClient {
async request<T>(url: string, options: RequestOptions): Promise<T> {
// Custom implementation here
return fetch(url, {
method: options.method || 'GET',
headers: options.headers,
body: options.body ? JSON.stringify(options.body) : null,
}).then(response => response.json());
}
}
const api = new BaseApi({
baseURL: 'https://api.example.com',
httpClient: new CustomHttpClient(),
});Error Handling
The BaseApi class automatically handles non-2xx HTTP responses by throwing an error. You can catch these errors using a try-catch block or the catch method on the returned Promise:
try {
const response = await api.get('/endpoint');
console.log(response);
} catch (error) {
console.error('Request failed', error);
}Testing
This library includes unit tests for all core functionalities. To run the tests, use the following command:
npm testContributing
Contributions are welcome! Please feel free to submit a Pull Request or open an Issue.
License
This library is licensed under the MIT License. See the LICENSE file for more details.
