| Feature | apiRequest | fetchWithRetry |
|---|---|---|
| Retry Mechanism | ❌ | ✅ Supports automatic retries |
| Default Fallback Value | ❌ | ✅ Returns defaultValue |
| Query Parameters | ❌ | ✅ Automatically handles params |
| Token Support | ✅ | ✅ |
| JSON Body | ✅ | ✅ |
Generic Return Type <T> | ✅ | ✅ |
const skills = await fetchWithRetry<SkillModel[]>(
"/api/skills", // Endpoint URL
[], // Default value if request fails
{
params: { level: "senior" }, // Query parameters
token: "abc123" // Auth token
},
2 // Number of retries
);
console.log(skills);
// Returns: API result or [] if all retries fail
Example: GET /users?role=admin&page=2
The parameters role=admin and page=2 are query parameters. If your GET endpoint doesn't need filters, you can omit the params option.
const users = await fetchWithRetry<User[]>(
ENDPOINTS.users,
[],
{
params: { role: "admin" }
}
);
const allUsers = await fetchWithRetry<User[]>(
ENDPOINTS.users,
[]
);
| Method | Data Location | Params Needed? |
|---|---|---|
| GET | URL query string | Optional (for filters/search) |
| POST | Request body | Usually no query params |
| PUT | Request body + URL | URL required for resource ID |
| PATCH | Request body + URL | URL required for resource ID |
| DELETE | URL | Required (which resource to delete) |
