vmo-umi-request
v0.1.2
Published
fetch
Downloads
17
Readme
vmo-umi-request
An enhanced HTTP request library based on umi-request, providing advanced features such as request merging, caching, and retry capabilities for modern frontend application development.
Features
- 🚀 Request Merging - Automatically merges duplicate requests to reduce server load
- 💾 Request Caching - Supports caching of request results for improved response times
- 🔄 Auto Retry - Automatically retries failed requests for improved reliability
- 📊 Complete State Management - Provides comprehensive request lifecycle state management
- 🔧 Highly Configurable - Supports flexible configuration options
- 🎯 TypeScript Support - Complete type definition support
Installation
npm install vmo-umi-request
# or using yarn
yarn add vmo-umi-request
# or using pnpm
pnpm add vmo-umi-requestBasic Usage
import { VmoUmiRequest } from 'vmo-umi-request';
// Create request instance
const request = new VmoUmiRequest({
prefix: 'https://api.example.com', // Set base URL
timeout: 5000, // Set timeout
});
// Define API configuration
const api = {
url: '/users',
requestConfig: {
method: 'GET',
ttl: 60000, // Cache duration (milliseconds)
retry: {
count: 3, // Number of retries
delay: 1000 // Retry delay (milliseconds)
}
}
};
// Send request
try {
const response = await request.request(api, { userId: 1 });
console.log('Request successful:', response);
} catch (error) {
console.error('Request failed:', error);
}Advanced Features
1. Request Merging
When multiple identical requests are initiated simultaneously, the library automatically merges them into a single network request:
// These two identical requests will be merged
const [response1, response2] = await Promise.all([
request.request(api, payload),
request.request(api, payload)
]);2. Request Caching
Supports caching of request results to reduce duplicate requests:
const api = {
url: '/data',
requestConfig: {
method: 'GET',
ttl: 60000, // Cache for 60 seconds
useCache: true
}
};3. Automatic Retry
Automatically retries failed requests:
const api = {
url: '/api/data',
requestConfig: {
retry: {
count: 3, // Retry up to 3 times
delay: 1000 // 1 second delay between retries
}
}
};API Reference
VmoUmiRequest Configuration Options
interface OptionsInit<M> {
prefix?: string; // Request prefix
timeout?: number; // Timeout duration
ttl?: number; // Cache duration
useCache?: boolean; // Enable caching
retry?: {
count: number; // Number of retries
delay: number; // Retry delay
};
// ... other umi-request supported options
}Request Method
request.request(
api: ApiConfig, // API configuration
payload: any, // Request data
config?: OptionsInit // Additional configuration
): Promise<any>Important Notes
- Request merging is enabled by default. To disable it, set
mergerequest: falsein the request configuration - Cache duration (ttl) is in milliseconds. Set to 0 or omit to disable caching
- Retry functionality requires explicit specification of retry count and delay in the configuration
Contributing
Contributions are welcome! Before submitting a Pull Request, please ensure:
- Test cases are updated
- Documentation is updated
- Existing code style is followed
License
MIT
