Ajax
Asynchronous JavaScript And XML
Javascript를 이용한 클라이언트와 서버 간에 데이터를 주고받는 비동기 HTTP 통신
XMLHttpRequest(XHR) 객체를 이용해서 전체 페이지가 아닌 필요한 데이터만 불러올 수 있다.
장점
단점
XMLHttpRequest(XHR)를 사용한 코드
xhr = new XMLHttpReqeust();
xhr.onreadystatechange = function(){ // 요청 콜백
if(xhr.readyState === xhr.DONE){ // 요청 완료시
if(xhr.status === 200 || xhr.status === 201){
console.log(xhr.responseText)
} else {
console.error(xhr.responseText);
}
}
};
xhr.open('GET', 'https://localhost:8080'); // 메소드와 주소 설정
xhr.send(); // 요청 전송
// xhr.abort() // 전송된 요청 취소
JQuery를 사용한 코드
$.ajax({
url: serverAddress,
type: 'GET',
success: function onData(data){
console.log(data);
},
error: function onError(error){
console.error(error);
}
});
axios
axios는 node.js 와 브라우저를 위한 Promise API를 활용하는 HTTP 통신 라이브러리 입니다.
비동기로 HTTP 통신을 할 수 있으며 return 을 promise 객체로 해주기 때문에 response 데이터를 다루기가 쉽습니다.
장점
단점
axios({
method: 'post',
url: 'https://localhost:8080/post',
data: {
userName: 'cube',
userId: 'cube1234'
}
}).then((response) => console.log(response));
fetch
ES6 부터 들어온 Javascript 내장 라이브러리
Promise 기반으로 만들어졌기 때문에 axios 와 마찬가지로 데이터를 다루기가 쉽고,
내장 라이브러리는 장점으로 상당히 편리하다.
장점
단점
fetch("https://localhost:8080/post", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
userName: "cube",
userId: "cube1234",
}),
}).then((response) => console.log(response));