새소식

인기 검색어

Js

Ajax, axios, fetch

  • -

Ajax


 자바스크립트를 이용한 비동기 HTTP 통신을 가능하게 해준다.

 클라이언트와 서버 간에 데이터를 주고받는 기술로 XMLHttpRequest(XHR)객체를 이용하여 전체 페이지가 아닌 필요한 데이터만 불러올 수 있다.

 

장점

· jquery를 통해 쉽게 구현 가능

· error, success, complete의 상태를 통해 실행 흐름 조절 가능

 

단점

· jquery를 사용해야 간편하고 호환성이 보장된다.

· promise 기반이 아니다.

 

 

사용 예시
// use Ajax with Jquery

var serverAddress = 'https://jsonplaceholder.typicode.com/posts';

// jQuery의 .get 메소드 사용
$.ajax({
    url: ,
    type: 'GET',
    success: function onData (data) {
        console.log(data);
    },
    error: function onError (error) {
        console.error(error);
    }
});

 

axios


 Node.js와 브라우저를 위한 Promise APU를 활용하는 HTTP 통신 라이브러리이다.

 axios 또한 비동기로 HTTP 통신을 할 수 있으며 return을 promise 객체로 해주기 때문에 response 데이터를 다루기 쉽다.

 

 

 

장점

· response timeout (Fetch에는 없는 기능) 처리 방법이 존재

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

· 브라우저 호환성이 뛰어나다.

 

단점

· 사용을 위해 모듈 설치가 필요(npm install axios)

 

 

사용 예시
axios({
  method: 'post',
  url: '/user/12345',
  data: {
    firstName: 'suhanmu',
    lastName: 'Kim'
  }
});

 

 

 

fetch


 ES6부터 들어온 자바스크립트 내장 라이브러리이다.

 Promise 기반으로 만들어졌기 때문에 axios와 마찬가지로 데이터 다루기가 쉽고, 내장 라이브러리라는 장점으로 상당히 편하다.

 

장점

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

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

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

 

 

단점

· 지원하지 않는 브라우저가 존재(IE11...)

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

· JSON으로 변환해주는 과정이 필요

· 상대적으로 axios에 비해 기능이 부족

 

 

사용 예시
fetch("https://localhost:3000/user/post", { 	// 주소
  method: "POST", 								// type
  headers: {	
    "Content-Type": "application/json",
  },											// contentType
  body: JSON.stringify({
    id: "asd123",
    description: "hello world",
  }),											// data
})
	.then((response) => console.log(response));	// 성공
	.catch(function(error){
    	console.log(error)
    }); 										// 에러

 

 

총평


 libarary를 사용하지 않거나 framework를 써서 jquery를 import 하지 않아도 괜찮은 프로젝트일 경우 fetch를 애용,

하위 호환성을 위해 axios를 사용하는게 좋은 듯 하다.

 

'Js' 카테고리의 다른 글

$(function(){});  (0) 2023.11.03
Json  (0) 2022.12.20
focus, blur  (0) 2022.11.03
키보드 이벤트  (0) 2022.11.03
Typeof  (0) 2022.10.27
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.