기록하는 개발자

[vanillaJs] Fetch와 Axios를 비교해보자! 본문

Web/Javascript

[vanillaJs] Fetch와 Axios를 비교해보자!

밍맹030 2022. 9. 3. 16:38
728x90

 

자바스크립트에는 HTTP Requests를 위한 방법으로 Fetch와 Axios있다.

두 가지를 모두 사용해보면서 장점과 단점을 느꼈었는데

정확히 어떤 점이 더 낫고 다른지 자세히 알아보자!

 

Fetch

ES6부터 들어온 JavaScript 내장 라이브러리다.
Promise 기반으로 만들어졌기 때문에 데이터를 다루기가 쉽다.

 

fetch("https://localhost:3000/dashboard/post", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    id: "mingmeng030",
    title: "fetch and axios",
    description : "what's the difference between fetch and axios?",
  }),
}).then((response) => console.log(response));

 

Fetch 장점

자바스크립트의 내장 라이브러리이므로 별도로 import 할 필요가 없다.

Promise 기반으로 만들어졌기 때문에 데이터를 다루기 편리하다.

내장 라이브러리이기 때문에 업데이트에 따른 에러 방지가 가능하다.

 

 Fetch 단점

- 지원하지 않는 브라우저들이 있다.

네트워크 에러 발생 시 response timeout이 없어 기다려야 한다.

JSON으로 변환해주는 과정이 추가적으로 필요하다.

- 상대적으로 axios에 비해 기능이 부족하다.

 

 

Axios

axios는 Node.js와 브라우저를 위한 Promise API를 활용하는 HTTP 통신 라이브러리이다.
비동기로 HTTP 통신을 할 수 있으며 return을 promise 객체로 해주기 때문에 response 데이터를 다루기가 쉽다.

 

axios({
  method: 'post',
  url: 'https://localhost:3000/dashboard/post',
  data: {
    id: "mingmeng030",
    title: "fetch and axios",
    description : "what's the difference between fetch and axios?",
  }
}).then((response) => console.log(response));

 

Axios 장점

response timeout 기능을 제공한다.

Promise 기반으로 만들어졌기 때문에 데이터 다루기가 편리하다.

- 폭 넓은 브라우저를 지원한다.

 

Axios 단점

- 사용을 위해 모듈 설치 필요하다. (npm install axios)

 

 

fetch와  axios의 차이 정리


Axios

Fetch
요청 객체에 url에 있다. 요청 객체에 url에 없다.
*써드파티 패키지로 설치가 쉽다.
( npm install axios ) 
Built-in APIs 로 별도의 설치 필요 없이, 
모던 브라우저에서 사용 가합니다.
*XSRF를 보호 해준다. 별도 보호 없음.
data 속성을 사용한다. body 속성을 사용한다.
data는 object를 포함한다. body는 문자열화 되어있다.
status가 200, statusText가 'OK'이면 성공이다. reponse 객체가 OK 속성을 포함하면 성공이다.
자동으로 JSON 데이터 형식으로 변환된다. .json() 메소드를 사용하여 변환 해야한다.
Request 취소 와 Request Timeout 설정이 가능하다. 해당 기능 없음.
HTTP 요청을 가로챌 수 있다. default로 제공하지 않음
폭 넓은 브라우저 지원 크롬 42+, firefox 39+, edge 14+, safari 10.1+ 에서만 지원

 third party  : 하드웨어 생산자와 소프트웨어 개발자의 관계를 나타낼 때 사용한다. 기본적으로 '제 3자' 를 뜻하는 단어로, '제 3자'가 어떤 분야의 제 3자를 의미하는지에 따라 의미가 나뉜다.

- 프로그래밍 개발과 개발자 사이에 플러그인, 라이브러리, 프레임워크 등을 서드파티로 볼 수 있다.

- 서비스와 사용자 사이에 서드파티는 응용 프로그램, 애플리케이션, 웹 서비스로 볼 수 있다. 

 

 XSRF  : 사이트 간 요청 위조(크로스 사이트 요청 위조, Cross-site request forgeryCSRFXSRF)는 웹사이트 취약점 공격의 하나로, 사용자가 자신의 의지와는 무관하게 공격자가 의도한 행위(수정, 삭제, 등록 등)를 특정 웹사이트에 요청하게 하는 공격을 말한다.

 

참고
fetch and axios
https://tlsdnjs12.tistory.com/26
https://www.geeksforgeeks.org/difference-between-fetch-and-axios-js-for-making-http-requests/

third parth
https://gyoogle.dev/blog/computer-science/software-engineering/3rd%20party.html
XSRF
https://ko.wikipedia.org/wiki/%EC%82%AC%EC%9D%B4%ED%8A%B8_%EA%B0%84_%EC%9A%94%EC%B2%AD_%EC%9C%84%EC%A1%B0
728x90