- Published on
fetch vs axios 차이점과 선택 기준 정리
- Authors

- Name
- Deokgoo Kim
- 프로덕트 엔지니어 (8년차)
- Social links
- GitHub
들어가기전
라이브러리를 사용할 수 없는 환경에서 js를 작성한 적이 있었는데
XMLHttpRequest을 사용하여 낡은 코드를 작성한다고(2019년에) 코칭을 받고 충격받은 적이 있어 Axios, Fetch에 대해서 정리했습니다.
본론
1. Fetch
XMLHttpRequest API의 대체제로 간단하게 사용하는 것이 가능합니다.
특징
- Promise패턴을 사용하고 있습니다.
- Promise 객체는 HTTP error 상태를 reject하지 않습니다. 대신 ok 상태가 false인 resolve가 반환되고 네트워크 에러 상태에는 reject가 반환됩니다.
- 기본적으로 fetch는 쿠키를 보내거나 받지 않습니다. (필요하면 credentials설정을 통하여 쿠키 전송)
- 간단하게 사용할 수 있으며 module import가 필요없다.
👇 MDN에 정리가 잘되어있어서 가져왔습니다. MDN 참고
postData('http://example.com/answer', {answer: 42})
.then(data => console.log(JSON.stringify(data)))
.catch(error => console.error(error));
function postData(url = '', data = {}) {
return fetch(url, {
method: 'POST',
mode: 'cors',
cache: 'no-cache',
credentials: 'same-origin',
headers: {
'Content-Type': 'application/json',
},
redirect: 'follow',
referrer: 'no-referrer',
body: JSON.stringify(data),
})
.then(response => response.json());
}
2. Axios
Axios는 브라우저를 위한 Promise 패턴 기반으로 브라우저와 node에서 동작한다고 합니다. nodejs에서는 http 모듈을 사용하고 브라우저에서는 XMLHttpRequests를 사용한다고 합니다.
특징
- 브라우저에서 XMLHttpRequests, node.js에서 http
- Promise패턴 사용
- 요청 및 응답 가로채기
- 요청 및 응답 데이터 변환
- 취소요청
- JSON 데이터에 대한 자동 변환 (너무 편합니다❤️)
- XSRF 로부터 보호하기 위한 클라이언트 측 지원
👇 Document내용을 가져왔습니다. axios document 참고
// GET request for remote image in node.js
axios({
method: 'get',
url: 'http://bit.ly/2mTM3nY',
responseType: 'stream'
})
.then(function (response) {
response.data.pipe(fs.createWriteStream('ada_lovelace.jpg'))
});
결론
- 결론은 둘 다 XMLHttpRequest의 대체제로 나왔고 Promise 패턴을 사용할 수 있다는 점이 좋습니다.
- Fetch에 비해 Axios가 좀 더 많은 기능들이 있습니다.
- axios는 모듈 설치가 필요하기 때문에 안정적이지 못한 프레임워크를 사용할 때는 불안합니다.
- 모듈 설치 환경이 안 되거나 프레임워크가 불안정하다면 →
Fetch - 안정적이고 모듈 설치가 가능하다면 →
Axios
관련 글
2021년 9월 12일
fetch, axios 란? (with Fetch)
fetch, axios 사용 이유를 알아보자
2024년 7월 27일
JavaScript 모듈 시스템의 역사와 발전 CommonJS에서 ES6 모듈까지
JavaScript 모듈 시스템의 역사와 발전을 살펴보며, CommonJS의 등장 배경과 ES6 모듈 시스템의 도입 이유, 그리고 브라우저 환경의 변화를 정리합니다.
2022년 3월 13일
JavaScript 지연 검색(Debounce) 구현 — API 호출 줄이기
검색 입력마다 API가 호출되는 문제를 setTimeout과 클로저로 해결하는 지연 검색(Debounce) 구현 방법을 정리했습니다.
댓글
새 글 알림 받기
실무에서 바로 써먹을 수 있는 개발 팁과 경험담을 받아보세요
#실무 개발 경험담#최신 기술 트렌드#성능 최적화 노하우#개발 팁과 인사이트
개인정보는 뉴스레터 발송 목적으로만 사용되며, 언제든 구독을 해지할 수 있습니다.