
강의를 보다 잠깐 눈을 뜨면 1시간이 지나있는 것에 대하여
비동기 통신 라이브러리인 axios
React 컴포넌트에서 axios를 사용해 GET 요청을 처리하는 방법
예제 코드:
import axios from "axios";
import { useEffect, useState } from "react";
const App = () => {
const [posts, setPosts] = useState([]);
useEffect(() => {
axios.get("http://localhost:3000/posts")
.then((response) => {
setPosts(response.data);
})
.catch((error) => {
console.error("Error fetching data: ", error);
});
}, []);
return (
<div>
{posts.map((post) => (
<div key={post.id}>
<h2>{post.title}</h2>
<p>{post.content}</p>
</div>
))}
</div>
);
};
export default App;
커스텀 인스턴스란?
커스텀 인스턴스 생성 방법
axios.create() 메서드를 사용하여 인스턴스를 생성
예시:
import axios from 'axios';
const api = axios.create({
baseURL: 'https://api.example.com',
timeout: 1000,
headers: {'X-Custom-Header': 'foobar'}
});
인터셉터란?
인터셉터 설정 방법
api.interceptors.request.use(function (config) {
// 요청을 보내기 전에 수행할 작업
return config;
}, function (error) {
// 요청 에러가 발생했을 때 수행할 작업
return Promise.reject(error);
});api.interceptors.response.use(function (response) {
// 응답 데이터를 가공하거나 로깅
return response;
}, function (error) {
// 응답 에러가 발생했을 때 수행할 작업
return Promise.reject(error);
});인터셉터 활용 예시
api.interceptors.request.use(function (config) {
const token = store.getState().auth.token;
if (token) {
config.headers.Authorization = `Bearer ${token}`;
}
return config;
}, function (error) {
return Promise.reject(error);
});api.interceptors.response.use(function (response) {
return response;
}, function (error) {
if (error.response.status === 401) {
// 인증 에러 처리
}
return Promise.reject(error);
});