비동기 통신할 때 intercepter를 사용하는 큰 이유는 유지보수 측면에서 효율적으로 관리할 수 있기 때문이다 (물론 다른 이유도 있겠지만)
장점은 아래와 같다
import axios from "axios";
export const TestRestInstance = axios.create({
baseURL: [target url],
timeout: 500,
});
먼저 axios를 생성한다
차후 해당 instance를 통하여 다른 파일에서 사용할 수 있다
instance.interceptors.request.use(
(config) => {
config.headers = {
...config.headers,
"Content-Type": "application/json; charset=utf-8",
};
return config;
},
(error) => {
// eslint-disable-next-line no-console
console.log(error);
return Promise.reject(error);
}
);
axios request 처리한다
config에 해더를 설정하고 오류 설정 시에는 reject시킨다
instance.interceptors.response.use(
(response) => {
return response;
},
(error) => {
// eslint-disable-next-line no-console
console.log(error);
return Promise.reject(error);
}
);
axios response 처리한다
useEffect(() => {
const init = async () => {
const { data } = await TestRestInstance.get("/posts/1");
console.log(data);
};
init();
}, []);
응답 요청해서 response가 담겨오는지 확인한다
그밖에도 인터셉터를 활용는 다양한 방법이 있다