
특정 조건(네트워크 오류, 특정 HTTP 응답 코드..)에서 실패한 요청을 자동 재시도.
여러 재시도 전략을 지원.
import axios from "axios";
import axiosRetry from "axios-retry";
// 자동 재시도 요청을 위한 axios-retry 구성
axiosRetry(axios, {
retries: 3, // 재시도 횟수
retryDelay: axiosRetry.exponentialDelay, // 재시도 사이에 지수 백오프 지연 사용
});
// 실패 시 재시도되는 axios 요청
axios
.get("https://jsonplaceholder.typicode.com/posts/1")
.then((response) => console.log(response.data))
.catch((error) => console.error(error));
여러 번 시도하려는 비동기 연산이나 로직 처리에 적합
import axios from "axios";
import retry from "retry";
async function fetchData(url) {
const operation = retry.operation({
retries: 3, // 최대 재시도 횟수
factor: 2, // 지연에 대한 지수 계수
minTimeout: 1000, // 첫 번째 재시도를 시작하기 전의 시간(밀리초)
maxTimeout: 2000, // 두 번째 재시도 사이의 최대 시간(밀리초)
});
operation.attempt(async (currentAttempt) => {
try {
const response = await axios.get(url);
console.log("Data:", response.data);
} catch (error) {
console.log(`Attempt ${currentAttempt} failed: ${error.message}`);
if (operation.retry(error)) {
console.log(`Retrying...`);
return;
}
console.error("Request failed after retries:", error.message);
}
});
}
fetchData("https://jsonplaceholder.typicode.com/posts/1");
모든 오류에서 재시도를 해선 안된다!