axios-settings.ts (커스텀 파일)
/**
* axios 기본설정
*/
const axiosOpts = {
// timeout: 5000,
// headers: {
// "Content-Type": "application/json",
// },
};
//
export const ax = Axios.create(axiosOpts);
//
/**
* axios response interceptor
*/
ax.interceptors.response.use(
(response: any) => {
// TODO: 응답에 따른 예외처리
return response;
},
(error: any) => {
showErrNoti(error);
return Promise.reject(error);
},
);
//
/**
* axios error 를 인수로 받아서 noti bar 를 출력한다.
*/
const showErrNoti = (error: any) => {
// 네트워크 에러 (서버 응답 없음 등)의 경우에는 error 객체에 response 가 존재하지 않음.
const er = error.response;
const httpCode = er ? `${error.response.status}` : '';
processError(httpCode);
}
//
/**
* axios error 에 대한 후처리 중, debounce를 걸어야 하는 부분을 별도로 래핑한 것
* - debounceMillis 동안에는 동일한 메시지피드백을 연속적으로 하지 않는다.
*/
const processError = debounce((httpCode: any) => {
alert(`[${httpCode}] error !!`);
},
debounceMillis,
{ leading: true, trailing: false }
);