Axios 인스턴스
axios.create([config])
axios.create로 사용자 지정 config로 새로운 Axios 인스턴스를 만들수 있다.
🏴 axios.create 사용 방법
const instance = axios.create({
baseURL: 'https://some-domain.com/api/',
timeout: 1000,
headers: {'X-Custom-Header': 'foobar'}
});
baseURL로 기본 URL을 설정해주고,
header에 요청 헤더를 작성할 수 있다.
매 번 요청을 보낼 때 마다 accessToken을 헤더에 매 번 붙이게 되면 반복되는 코드가 생기고, 번거롭기 때문에 axios instance를 설정함으로써 해결하려고 한다.
💡 프로젝트에 적용
src 폴더 안에 api 폴더를 생성하고, axiosInstance.js 파일을 생성해주었다.
src > api > axiosInstance.js
1️⃣ axios instance 생성
import axios from "axios";
// Axios 인스턴스 생성
const axiosInstance = axios.create({
baseURL: "", // 기본 URL
headers: {
Accept: "*/*",
"Content-Type": "application/json",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Credentials": "true",
},
});
// request 인터셉터를 설정하여 요청을 보내기 전에 토큰을 추가
axiosInstance.interceptors.request.use(
(config) => {
const accessToken = localStorage.getItem("accessToken"); // 로컬 스토리지에서 accessToken을 가져옴
if (accessToken) {
config.headers.Authorization = `Bearer ${accessToken}`; // Authorization 헤더에 토큰을 추가
}
return config;
},
(error) => {
return Promise.reject(error);
}
);
export default axiosInstance;
axios.create를 이용해서, axios 인스턴스를 생성하고, 기본 URL과 헤더를 지정해주었다.
request Interceptors를 사용해 요청을 보내기 전에 토큰을 추가해준다. 로컬 스토리지에서 accessToken을 가져오고 accessToken을 성공적으로 가져왔다면,Authorization 헤더에 토큰을 추가해준다.
localStorage.setItem("accessToken", response.data.accessToken);
현재 로컬스토리지에는 localstorage.setItem으로 accessToken이 저장되어있는 상태이다.
2️⃣ 다른 컴포넌트에서 axios instance 사용
import
import axiosInstance from "../api/axiosInstance";
만들어둔 axiosInstance를 import해서 사용한다.
[post 사용 예시]
try {
const response = await axiosInstance.post(`/url`, data);
console.log(response.data);
} catch (error) {
console.error(error);
[get 사용 예시]
try {
const response = await axiosInstance.get(`/url`);
console.log(response.data);
} catch (error) {
console.error(error);
}
📌 참고 링크
Axios 인스턴스 | Axios Docs
Axios 인스턴스 인스턴스 만들기 사용자 지정 config로 새로운 Axios 인스턴스를 만들수 있습니다. axios.create([config]) const instance = axios.create({ baseURL: 'https://some-domain.com/api/', timeout: 1000, headers: {'X-Custom-
axios-http.com
axios instance 만들기
const fetchData = async () => { // 현재 상영중인 영화 정보를 가져오기 (여러영화) const request = await axios.get(requests.fetchNowPlaying); console.log(request); //0번째 영화의 id만 가져오기 const movieID = request.data.results
hihiha2.tistory.com
'개발공부 > REACT' 카테고리의 다른 글
[React] Material UI란? _ Tabs 컴포넌트 예시 (0) | 2024.07.30 |
---|---|
[React] 렌더링이 두 번 발생하는 이유 _ React.StrictMode (1) | 2024.06.18 |
[React] 화면 캡처 후 저장 기능 만들기 - Html2Canvas (0) | 2024.03.23 |
[React] 리뷰 - 별점 기능 만들기 (1) | 2024.01.28 |
[React] API의 정의, 장/단점, API 사용하기 _ JSON, fetch 함수 (1) | 2023.11.25 |