글쓰는쿼카의 PM 여정
🌐비동기 통신 방법 - axios -part 2 (2024. 6. 13.) 본문
#스파르타코딩클럽 #내일배움캠프(프론트엔드_React)
학습주제 : React
학습내용 : axion 커스텀 인스턴스(Custom Instance), 인터셉터(interceptor)
학습일 : 2024. 6. 13.
<목차>
1. Axios Custom Instance 개념과 필요
2. Interceptor 적용하기
배운 내용 요약
1. Axios Custom Instance 개념과 필요
코드가 복잡하고 방대졌을 때를 가정해보자.
4,000줄이 넘는 코드, axios 여러 군데 흝어져 있을 때 만약 baseURL 주소나 헤더(Header)가 변경 된다면 모든 axios API를 일일이 손으로 바꿔줄 수 있을까? NOPE!
'Axios Custom Instance'를 활용하면 간단하게 해결할 수 있다.!
<비교>
순수한 Axiox
const data = await axios.get("http://localhost:4000/");
Axios Custom Instance
// 파일 경로: src/axios/인스턴트.jsx
const 인스턴트 = axios.create({
baseURL: "http://localhost:4000",
});
//위 순수한 axios 코드로 적용하기
//파일 경로: src/app.jsx
const data = await 인스턴트.get("/") //훨씬 간단해짐
(예시코드)
더보기
import "./App.css";
import { useEffect } from "react";
import 인스턴트 from "./axios/인스턴트";
function App() {
useEffect(() => {
인스턴트
.get("/cafe")
.then((res) => {
console.log("결과 => ", res.data);
})
.catch((err) => {
console.log("오류가 발생하였습니다!");
});
}, []);
return <div>axios 예제입니다.</div>;
}
export default App;
2. Interceptor 적용하기
- interceptor 문법 : request.use(요청) , response.use(응답)
- request, response 각각 2가지 인자를 받으며, 인자는 콜백함수도 받을 수 있음
- 2가지 인자? fullfill(성공), error(실패)의 경우를 말함
import axios from "axios";
const 인스턴트 = axios.create({
baseURL: "http://localhost:4000",
});
인스턴트.interceptors.request.use(
function (config) {
// 요청을 보내기 전 수행
console.log("인터셉트 요청 성공!");
return config;
},
function (error) {
// 오류 요청을 보내기 전 수행
console.log("인터셉트 요청 오류!");
return Promise.reject(error);
}
);
인스턴트.interceptors.response.use(
function (response) {
console.log("인터셉트 응답 받았어요!");
// 정상 응답
return response;
},
function (error) {
console.log("인터셉트 응답 못받았어요ㅠㅠ");
return Promise.reject(error);
}
);
export default 인스턴트;
'개발 > React' 카테고리의 다른 글
[팀프로젝트] 역할 세분화 요청 (2024. 6. 18.) (0) | 2024.06.18 |
---|---|
[팀프로젝트] 아웃소싱 프로젝트 소개 (2024. 6. 16.) (0) | 2024.06.18 |
🌐비동기 통신 방법 - axios (2024. 6. 11.) (0) | 2024.06.12 |
🌐비동기 프로그래밍 - Promise, HTTP, json-server (2024. 6. 11.) (0) | 2024.06.11 |
[팀프로젝트 회고] 코딩 2개월만에 프로젝트를 완성해보다! (2024. 6. 7.) (0) | 2024.06.10 |