지금까지 바닐라 JS건, 리액트건 모두 서버가 없는 환경에서 작업을 하다 보니 새로고침을 하면 자동으로 값이 날아갔는데, 이제는 서버와의 통신 하기전에 징검다리 역할을 해줄 fetch와 axios를 간단히 비교해보자
예제코드
fetch('/api/data')
.then(response => {
if (!response.ok) throw new Error('네트워크 응답이 정상적이지 않습니다');
return response.json();
})
.then(data => console.log(data))
.catch(error => console.error('Fetch 에러:', error));
Axios는 fetch보다 더 많은 기능을 제공하는 인기 있는 HTTP 클라이언트 라이브러리이다.
예제코드
import axios from 'axios';
axios.get('/api/data')
.then(response => console.log(response.data))
.catch(error => console.error('Axios 에러:', error));
Axios:
axios.get('/api/data').then(response => console.log(response.data));
Fetch:
fetch('/api/data')
.then(response => response.json())
.then(data => console.log(data));
const apiClient = axios.create({ baseURL: 'https://api.example.com' });
apiClient.interceptors.request.use(config => {
// 요청 전에 수행할 작업
return config;
}, error => {
return Promise.reject(error);
});
apiClient.interceptors.response.use(response => {
// 응답 데이터를 가공하거나 로그를 남길 수 있음
return response;
}, error => {
return Promise.reject(error);
});
apiClient.get('/endpoint')
.then(response => console.log(response.data))
.catch(error => console.error('Axios 에러:', error));
Fetch와 Axios는 각각의 장단점이 있는데, 간단한 HTTP 요청에는 Fetch가, 더 많은 기능과 크로스 브라우징 지원이 필요하다면 Axios가 적합한 것 같다.!