[typescript] Axios 에러 핸들링 및 에러 처리 방법
Axios는 많은 프로젝트에서 HTTP 클라이언트로 사용되며, 네트워크 요청 중에 발생한 에러를 어떻게 처리해야 하는지 알아보겠습니다.
1. Axios와 에러 핸들링
Axios를 사용하여 네트워크 요청을 보낼 때, 서버로부터 불안정한 응답이 올 수 있습니다. 이런 경우에 대비하여 Axios는 다양한 상태 코드와 에러를 핸들링할 수 있도록 지원하고 있습니다.
2. 네트워크 에러 처리
네트워크 에러는 서버로의 요청이 실패했거나 요청을 보내는 도중에 연결이 끊긴 경우에 발생합니다. 이때 Axios는 axios.isAxiosError
를 통해 에러를 확인할 수 있습니다. 또한 error.response
를 통해 서버로부터의 응답을 확인할 수 있습니다.
import axios, { AxiosError } from 'axios';
axios.get('https://example.com/api')
.catch((error: AxiosError) => {
if (axios.isAxiosError(error)) {
if (error.response) {
// 서버 요청 응답이 2XX이 아닌 경우
console.log(error.response.data);
console.log(error.response.status);
console.log(error.response.headers);
} else {
// 서버와의 연결이 끊어진 경우
console.log(error.message);
}
console.log(error.config);
}
});
3. 커스텀 에러 핸들링
Axios를 사용하는 애플리케이션에서 커스텀한 에러 핸들링을 구현하여 각종 에러 상황에 대응할 수 있습니다. 예를 들어, 네트워크 에러, 서버 응답 오류 등에 대한 처리를 커스텀하여 사용자 경험을 개선할 수 있습니다.
import axios, { AxiosError } from 'axios';
const instance = axios.create({
baseURL: 'https://example.com/api',
timeout: 1000,
});
instance.interceptors.response.use((response) => {
return response;
}, (error) => {
if (axios.isAxiosError(error) && error.response) {
if (error.response.status === 401) {
// 사용자에게 로그인을 요청
// 예: history.push('/login');
} else {
// 그 외에 서버 응답 오류에 대한 처리 로직
}
} else {
// 네트워크 에러 처리
}
return Promise.reject(error);
});
Axios를 사용하여 네트워크 요청을 보낼 때, 에러 핸들링과 커스텀 에러 처리를 위해 위와 같은 방법을 사용할 수 있습니다.
이상적으로는 모든 예상치 못한 에러 상황에 대비하여 신속하고 적절한 응답을 제공하는 것이 좋습니다.