What is difference between Fetch and Axios ? JS에서 많이 사용하는 HTTP 기반 비동기 통신 방법인 Axios 와 Fetch 의 차이에 대해 알아보도록 하자.
기존의 웹
에서는 어떤 정보들을 비동기로 요청하기 위해서 XHR(XML HTTP Request)
객체를 사용하여야만 했다고 한다.. 근데 XHR은 되게 불친절하게 정보를 제공한다고 한다. (데이터를 통째로 줘버린다던지..)
요청의 상태나 변경을 계속 보고 있게 하려면 이벤트를 추가로 등록해서 변경사항들을 다시 받아야 하고.. 요청의 성공/실패/상태변경 등에 따른 분기를 나누는 것도 복잡했다.
→ 새로운 url을 호출할 때마다 모든 페이지를 새롭게 그려야 하는 등의 흔히 생각하는 동기적
으로 정보를 요청했을 때 떠올릴 수 있는 문제가 일어나는 듯
그래서 *비동기적*으로 정보를 요청하는 게 필요했다!
비동기적으로 처리를 하게 되면 페이지를 렌더링하고 → 필요에 따라 데이터만 바꿔오게 되는 것이다
서버는 데이터를 쪼금만 보내줘도 되서 좋고.. 클라이언트는 조금만 렌더링해도 되서 부하가 적게 걸리게 되는 거다. 개이득
혹시나 비효율적이라고 하는 모체인 XHR 이 궁금하다면 XMLHttpRequest API Document 과 XMLHttpRequest Document 를 읽어보도록 하자. 개념과 사용법 정도가 나와있다.
Axios
는 Promise 기반으로 node.js와 browser를 연결해주는 HTTP 통신 라이브러리이다.
비동기로 HTTP 통신을 가능하게 해주며 return을 promise 객체로 제공해주기 때문에 reponse 데이터를 다루기도 훨씬 쉽게 되어있다.
AXIOS의 POST 방법 예시
axios({
method: 'post',
url: '호출할 url',
data: {
//요청할 때 필요한 데이터
데이터명1: "데이터값1",
데이터명2: "데이터값2",
...
}
});
이런 형태를 띈다.
ES6 버전 부터 javascript의 내장 라이브러리
로 들어오게 된다.
Fetch 또한 Promise 기반으로 만들어졌기 때문에, Axios와 마찬가지로 데이터를 다루는 게 어렵지 않고, 내장 라이브러리
라는 장점으로 인하여 편리성 부분에서 강점을 띈다.
Fetch의 POST 방법 예시
const url = '요청할 url 주소'
const option = {
method: 'POST',
header: {
'Accept': 'application/json',
'Content-Type': 'application/json';charset='UTP-8'
},
body: JSON.stringify({
데이터명1: '데이터값1',
데이터명2: '데이터값2'
})
}
fetch(url,options)
.then(response => console.log(response))
Axios
장점
호환성
]단점
Fetch
장점
단점
그래서 ?
React
에서는 주로 Axios
를React Native
에서는 주로 Fetch
를 사용개발 다 해놓고 이제야 장단점 알아보는 🐵