AJAX

YS_Study.log·2022년 1월 16일
0
post-custom-banner

AJAX(Asynchronous JavaScript And XMLHttpRequest)

AJAX는 CSR을 위해 사용하며 웹페이지에서 동적으로 서버에게 데이터를 주고 받을 수 있는 기술을 의미한다. -> CSR 설명

  • 앞서 알아본 HTTP 웹 브라우저(클라이언트)와 서버가 데이터를 요청하고 응답을 받을 수 있도록 해주는 프로토콜인 HTTP를 이용하여 서버에게 데이터를 요청하고 받아오는 방법으로 AJAX를 사용한다.

AJAX의 특징

  • 가장 큰 특징은 이전과 달리 서버에서 완성된 HTML을 보내주지 않아도 웹 페이지에 필요한 부분에 필요한 데이터만 비동기적으로 가져와서 브라우저에서 화면의 일부만 업데이트 하여 렌더링 할 수 있다는 것
    즉, 브라우저는 서버에 요청을 보내고 응답을 받을때까지 모든 동작을 멈추는 것이 아니라, 계속해서 페이지를 사용할 수 있게 하는 비동기적인 방식을 사용할 수 있다.
  • XHR이 표준화 되면서부터 브라우저에 상관 없이 AJAX를 사용할 수 있다.
  • 유저 중심 어플리케이션 개발 AJAX를 사용하면 필요한 일부분만 렌더링하기 때문에 빠르고 더 많은 상호작용이 가능한 어플리케이션을 만들 수 있다.
  • 더 작은 대역폭 대역폭: 네트워크 통신 한 번에 보낼 수 있는 데이터의 크기. AJAX에서는 필요한 데이터를 텍스트 형태(JSON, XML 등) 보내면 되기 때문에 비교적 데이터의 크기가 작다.
    (이전에는 서버로부터 완성된 HTML 파일을 받아와야했기에 한번에 보내야 하는 데이터의 크기가 컸다.)

XHR (XMLHttpRequest) VS Fetch

AJAX에서 대표적으로는 사용하는 기술로는 Web API인 "XHR API" 와 "Fetch API" 가 있다. -> Fetch API

Fetch의 등장 이전에는 표준화 된 XHR(XMLHttpRequest)를 사용했다. Fetch는 XHR의 단점을 보완한 새로운 Web API이며, XML보다 가볍고 JavaScript와 호환되는 JSON을 사용합니다. 따라서 현재 XHR보다 Fetch를 많이 사용한다.

  • xml과 json은 html과 마찬가지로 마크업언어로 데이터를 표현할 수 있는 방법, 포맷이다. -> json 설명
  • 신기술인 Fetch는 인터넷 익스플로워에서는 지원이 안되는 점을 유의!

Fetch 예제

// Fetch를 사용
fetch('http://52.78.213.9:3000/messages')
	.then (function(response) {
		return response.json();
	})
	.then(function (json) {
		...
});

XMLHttpRequest 예제

// XMLHttpRequest를 사용
var xhr = new XMLHttpRequest();
xhr.open('get', 'http://52.78.213.9:3000/messages');

xhr.onreadystatechange = function(){
	if(xhr.readyState !== 4) return;
	// readyState 4: 완료

	if(xhr.status === 200) {
        // status 200: 성공
		console.log(xhr.responseText); // 서버로부터 온 응답
	} else {
		console.log('에러: ' + xhr.status); // 요청 도중 에러 발생
	}
}

xhr.send(); // 요청 전송

AJAX 구성 요소(기술)

  • 웹 페이지 표현을 위한 HTML, CSS
  • 데이터에 접근하거나, 화면 구성을 동적으로 조작하는 DOM
  • 데이터 교환에 사용되는 JSON 이나 XML
  • 웹 서버와 비동기적 통신을 위한 XMLHttpRequest 객체
  • JavaScript

XHP의 이름은 왜 xml 포맷 이름을 붙여서 이름을 지었을까?

이름만 보면 xml만 사용해서 데이터를 주고받을 수 있는 것 같아보이지만, 데이터를 주고받을 때는 다양한 포맷을 사용하여 주고받을 수 있으며 지금은 JSON 포맷을 주로 사용하고 있다.

그런데 왜 xml 넣어서 이름을 지었을까?
그 이유는 마이크로소프트사에서 그 당시에 개발할때 데이터를 전송할때 xml 포맷을 사용했어서 xml이 포맷이름을 붙여서 이름을 지었는데, xml 포맷만 사용하는 것이 아니고 다양한 포맷을 사용할 수 있기 때문에 실수라고 봐야한다.

출처
코드스테이츠
드림코딩엘리 유튜브
MDN
https://developer.mozilla.org/ko/docs/Web/API/XMLHttpRequest
https://developer.mozilla.org/ko/docs/Web/API/Fetch_API

profile
느리지만 조금씩 공부하는 중 입니다. 현재 1년 6개월차 신입입니다 ><!
post-custom-banner

0개의 댓글