WEB FE/React
[React] Ajax와 Axios, fetch 차이점과 비교
heehminh
2023. 2. 20. 18:02
반응형
1- Ajax란?
Asynchronous JavaScript And XML: 자바스크립트를 사용한 비동기 통신, 클라이언트와 서버간에 데이터를 주고받는 기술이다.
서버와 비동기적으로 통신함으로 인해 전체 웹페이지를 다시 불러오는 동기 방식과는 다르게 해당 부분의 사용자 인터페이스만을 갱신할 수 있다. (ex. 페이스북에서 좋아요 버튼이 눌릴때마다 페이지가 리렌더링되는 것을 방지)
Ajax 사용법
- JQuery 설치하여 $.ajax() 사용
- axios 설치하여 axios.get() 사용 npm install add axios --save
- 순수 자바스크립트 문법 fetch() 사용
2- Fetch 란?
fetch("<https://localhost:3000/user/post>", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
id: "asd123",
description: "hello world",
}),
}).then((response) => console.log(response));
- Fetch의 장점
- 자바스크립트 내장 라이브러리 이므로 별도로 import 할 필요가 없다.
- Promise 기반으로 만들어졌기 때문에 데이터를 다루기 편리하다.
- 내장 라이브러리이기 때문에 업데이트에 따른 에러 방지가 가능하다.
- Fetch의 단점
- 지원하지 않는 브라우저가 존재한다.
- 네트워크 에러 발생시 response timeout이 없어 기다려야 한다.
- JSON으로 변환해주는 과정이 필요하다.
- axios에 비해 기능이 부족하다.
3- Axios 란?
axios는 Node.js와 브라우저를 위한 Promise API를 활용하는 HTTP 통신 라이브러리이다. 비동기로 HTTP 통신을 할 수 있으며 return 을 promise 객체로 해주기 때문에 response 데이터를 다루기 쉽다.
axios({
method: "post"
url: "<https://localhost:3000/user>",
data: {
userName: "Cocoon",
userId: "co1234"
}
}).then((response) => console.log(response));
- Axios의 장점
- response timeout 처리 방법이 존재한다. (fetct에는 존재 x)
- Promise 기반으로 만들어졌기 때문에 데이터를 다루기 편하다.
- 크로스 브라우징 최적화로 브라우저 호환성이 뛰어나다. (구형 브라우저도 지원한다.)
- Axios의 단점
- 사용을 위해 모듈 설치가 필요하다. npm install axios
4- Axios, Fetch 비교
Axois Fetch
Axois | Fetch |
써드파티 패키지로 설치 쉬움 (npm install axios) | Built-in-APIs로 별도의 설치 없이, 모던 브라우저에서 사용 가능 |
wide browser 지원 | 크롬 42+, firefox 39+, edge 14+, safari 10.1+ 만 지원 하위 호환성을 지원하려면 polyfill을 이용해야 한다. |
XSRF(=CSRF, 서버공격) Protection 보안 기능 제공 | X |
자동 JSON 데이터 변환 지원 | JSON 데이터 헨들링 위해 추가 절차 필요 Fetch interface의 json()을 이용하는 로직을 추가 |
Request 취소, Request Timeout 설정 가능 | X, AbortController 이용하여 구현해야 한다. |
HTTP Requests와 Intercept 가능 | Intercept Requests 기본적으로 제공되지 않음, Global Fetch Method를 Overwrite하여 나의 인터셉트 정의 가능 |
Download Progress 지원 | Upload Progress 지원안함, Response Object의 Body Property를 통해 제공되는 ReadableStream 인스턴스 이용 가능 |
반응형