sefetch
Version:
A highly advanced fetch module with caching, retry, and timeout features.
137 lines (98 loc) • 3.35 kB
Markdown
# `sefetch` - Advanced Fetch Wrapper
`sefetch` is an advanced wrapper around the native `fetch` API that provides additional functionality, including caching, retry logic, and request timeouts. It is designed to simplify HTTP requests and offer enhanced control over network interactions.
## Features
- **Caching**: Cache responses to avoid redundant network requests.
- **Retry Logic**: Automatically retry failed requests a specified number of times.
- **Timeouts**: Abort requests that exceed a specified timeout period.
- **Customizable Headers**: Set headers directly in request options.
## Installation
To use `sefetch`, you can copy the `sefetch` class code into your project or install it via npm if available.
## Usage
Here's how you can use the `sefetch` class in your project:
### Importing and Creating an Instance
```javascript
const sefetch = require('./sefetch'); // Adjust path as needed
const api = new sefetch('https://api.example.com', 5000, 3, true);
```
### Making Requests
**GET Request:**
```javascript
api.get('/data', {
headers: {
'Authorization': 'Bearer your-token',
'Content-Type': 'application/json'
}
})
.then(data => console.log(data))
.catch(error => console.error(error));
```
**POST Request:**
```javascript
api.post('/submit', { key: 'value' }, {
headers: {
'Authorization': 'Bearer your-token',
'Content-Type': 'application/json'
}
})
.then(data => console.log(data))
.catch(error => console.error(error));
```
**PUT Request:**
```javascript
api.put('/update', { key: 'newValue' }, {
headers: {
'Authorization': 'Bearer your-token',
'Content-Type': 'application/json'
}
})
.then(data => console.log(data))
.catch(error => console.error(error));
```
**DELETE Request:**
```javascript
api.delete('/remove', {
headers: {
'Authorization': 'Bearer your-token'
}
})
.then(data => console.log(data))
.catch(error => console.error(error));
```
### Managing Cache
**Clear Cache:**
```javascript
api.clearCache();
console.log(`Cache size: ${api.getCacheSize()}`);
```
### Setting Default Headers
**Set Default Headers:**
```javascript
api.setHeaders({
'Authorization': 'Bearer your-token',
'Content-Type': 'application/json'
});
```
## Options
- **`baseURL`**: Base URL for requests.
- **`timeout`**: Timeout duration in milliseconds (default: 5000ms).
- **`retries`**: Number of retry attempts on failure (default: 3).
- **`cache`**: Enable or disable caching (default: false).
## Methods
- **`get(url, options)`**: Performs a GET request with optional headers and other settings.
- **`post(url, body, options)`**: Performs a POST request with a JSON body and optional headers.
- **`put(url, body, options)`**: Performs a PUT request with a JSON body and optional headers.
- **`delete(url, options)`**: Performs a DELETE request with optional headers.
- **`clearCache()`**: Clears the cache.
- **`getCacheSize()`**: Returns the size of the cache.
- **`setHeaders(headers)`**: Sets default headers for requests.
## Error Handling
- **Timeouts**: Requests that exceed the timeout period will be aborted.
- **Retries**: Failed requests will be retried based on the specified number of retries.
- **Error Logging**: Errors are logged to the console for debugging.