- js에서 비동기 HTTP통신(클라이언트와 서버 간 데이터를 주고받는 것)을 위해 사용 되는 것들
1. Ajax
- Asynchronous JavaScript And XML의 약자
- Javascript를 사용한 비동기 통신, 클라이언트와 서버간에 데이터를 주고 받는 기술
→Javascript에서 비동기 HTTP통신이 가능하도록 해줌
**비동기 HTTP : response와 request 비동기 식으로 다룰 수 있는 것 - Ajax 프레임 워크 : Ajax를 이용해 개발을 손쉽게 할 수 있도록 여러가지 기능을 포함해 놓은 개발환경
가장많이 사용되는 프레임 워크 : Prototye, script.aculo.us, dojo, jQuery
2.axios
- 등장배경
- 기존 비동기 요청 : WEB에서 리소스를 비동기로 요청하기 위해서는 XHR(XML HTTP Request)객체 사용
→ 요청의 상태나 변경을 구독하려면 Event를 등록해서 변경사항을 받아야 함
→ 요청의 성공, 실패 여부나 상태에 따라 처리하는 로직이 들어감
- 기존을 비동기를 보완 → HTTP요청에 최적화 + 추상화↑ api가 생겨남 → 대표적으로 axios, fetch가 있음 - axios : Promise HTTP client for the browser and node.js
→ node.js와 브라우저를 위한 HTTP통신 라이브러리 - 비동기로 HTTP통신을 가능하게 해주며 return을 promise객체로 해주기 때문에 response데이터를 다루기 쉬움
- 장점 - response timeout처리 방법 존재
- Promise기반으로 만들어졌기 떄문에 데이터 다루기 편리
- 크로스 브라우징 최적화로 브라우저 호환성이 뛰어남 - 단점 : 사용을 위해 모듈 설치 필요
3.fetch
- ES6부터 JavaScript의 내장 라이브러리로 들어와있음
- promise기반으로 만들어졌기에 Axios와 마찬가지로 데[이터를 다루는데 어렵지 않으며, 내장라이브러리임
- 장점 - JavaScript의 내장 라이브러리이므로 별도 import가 필요 없음
- Promise기반으로 만들어졌기 때문에 데이터 다루기가 편리
- 내장라이브러리이기때문에 업데이트에 따른 에러 방지 가능
**Promise기반 : JavaScript 비동기 처리에 사용되는 객체 - 단점 - 지원하지 않는 브라우저가 존재(IE11등)
- 네트워크 에러 발생 시 reponse timeout이 없어 기다려야함
- JSON으로 변화해주는 과정 필요
- 상대적으로 axios에 비해 기능 부족
Axios | Fetch |
모듈 설치 필요 | Built-in API로 설치 필요x |
wide browser 지원 | 오직 크롬 42+, firefox 39+, edge 14+, safari 10.1+ 지원 polyfill 이용해서 하위 호환성 지원 가능 |
XSRF Protection 보안 기능 제공 | x |
자동 JSON 데이터 변환 지원 | JSON 데이터 핸들링 위해 추가 절차 필요 Fetch interface의 json()이용하는 로직 추가하여 가능 |
Request취소, Request Timeout설정 가능 | x AbortController이용해 구현가능 |
HTTP Requests의 intercept 가능 | Intercept Requests 제공x Global Fetch Method를 Overwrite하여 나의 인터셉터 정의 가능 |
Download Progress 지원 | Upload Progress 지원 Response Object Body Property통해 제공되는 ReadableStream 인스턴스 이용 가능 |
참고)
[개발상식] Ajax와 Axios 그리고 fetch
여러분들이 프로젝트를 진행하다보면 클라이언트와 서버 간 데이터를 주고받기 위해 HTTP 통신을 사용하게될겁니다. 주로 어떤것을 사용하시나요? 또, 그것에 대해 얼마나 알고계시나요? 저와
velog.io
http://www.tcpschool.com/ajax/ajax_intro_basic
코딩교육 티씨피스쿨
4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등
tcpschool.com
https://tlsdnjs12.tistory.com/26
fetch와 axios 차이점과 비교
저번에 API에 대해서 알아봤습니다. 자바스크립트에서 HTTP Requests를 위한 방법이 두가지가 존재하는데 🎁 오늘은 어떤것이 존재하고 어떤 차이점이 존재하는지 알아보겠습니다. 🎁 💖 Fetch ES6
tlsdnjs12.tistory.com
'CS지식 > 개발 상식' 카테고리의 다른 글
[CS 지식 - 개발 상식] 프레임워크 vs 라이브러리 (0) | 2023.01.15 |
---|---|
[CS지식 - 개발 상식] 메모리 구조 (0) | 2023.01.15 |
[CS 지식 - 개발 상식] Web Server와 WAS의 차이 (0) | 2023.01.12 |
[CS 지식 - 개발상식] TDD의미 및 장점 (0) | 2023.01.11 |
[CS 지식 - 개발상식] 함수형 프로그래밍 (0) | 2023.01.11 |