※ 본 내용은 해당 교재를 참고하여 공부한 내용과 본인의 생각을 정리한 글입니다.
https://www.yes24.com/Product/Goods/105608999
바닐라 자바스크립트 - 예스24
실무 역량까지 한 번에 잡을 수 있는바닐라 자바스크립트 이론서자바스크립트는 이제 브라우저를 넘어 웹 애플리케이션뿐만 아니라 마이크로 컨트롤러까지 점점 사용하는 곳이 늘어나고 있다.
www.yes24.com
XMLHttpRequest(XHR) 객체는 서버와 상호작용하기 위해 사용된다. 전체 페이지를 새로 고침하지 않아도 URL을 통해 데이터를 전송하거나 받아올 수 있다.
XMLHttpRequest는 이름에 XML이 붙어서 xml 데이터 통신으로 오해할 수 있는데, 모든 종류의 데이터를 받아올 수 있다.
● 객체 생성
XHLHttpRequest 객체는 브라우저에서 제공하는 Web API 이기 때문에 브라우저 환경에서만 정상적으로 동작된다. node.js 환경에서는 제공되지 않는다. XHLHttpRequest 생성자 함수를 호출해서 생성 한다.
const xhr = new XMLHttpRequest();
● 요청 전송
클라이언트(브라우저)에서 서버로 요청을 보내기 위해서는 HTTP Method, 요청 URL을 정의하는 것부터 시작한다. XHLHttpRequest의 내장 함수인 open()을 이용한다.
● HTTP Method, URL 정의
xhr.open("GET", "https://jsonplaceholder.typicode.com/posts/1");
HTTP Method | 설명 |
GET | 리소스 요청 |
POST | 리소스 생성 |
PUT | 리소스 수정 |
PATCH | 리소스 일부 수정 |
DELETE | 리소스 삭제 |
open() 함수로 HTTP 요청 방식과 요청 URL을 정의했다고 해서 바로 실행이 되는 것은 아니다. 클라이언트에서 서버로 HTTP 요청을 하기 전에 요청에 맞는 헤더 값을 설정해야 한다.
setRequestHeader() 함수를 통해서 요청 헤더 값을 설정할 수 있다. 일반적으로 요청할 때 서버로 전송하는 데이터의 타입을 선언하기 위한 용도로 많이 사용한다.
헤더 값 중 content-type에 해당한다. 은 서버로 전송할 데이터의 MIME 타입 정보를 설정한다. 웹 개발 시 자주 사용하는 MIME 타입은 크게 3가지다.
+ 231122 PATCH에 대해서는 나중에 따로 정리 할 계획.
MIME 타입 | content-type 값 | 목적 |
application | application/json | json 데이터 전송 |
text | text/plain | 텍스트 데이터 전송 |
multipart | multipart/form-data | 파일 전송 |
다음과 같이 요청을 위한 content-type을 정의할 수 있다.
ㆍ헤더 값 중 content-type 정의
xhr.setRequestHeader("content-type", "application/json");
open() 함수와 setRequestHeader() 함수로 요청에 필요한 정의가 끝나면 최종적으로 send() 함수를 통해 요청을 보내게 된다. 이때 서버로 전송할 데이터가 있다면 send() 함수에 매개변수로 데이터를 전달하면 됩니다. 전달된 데이터는 request의 body에 담겨 전송된다.
단, HTTP 요청 방법이 GET인 경우는 send() 함수에 매개변수로 데이터를 전달해도 전달한 데이터는 실제로는 전송되지 않는다.
● 응답 처리
클라이언트에서 서버로 요청을 전송하면, 서버는 요청한 결과를 응답하게 됩니다. XMLHttpRequest 객체가 발생시키는 이벤트를 통해서 서버가 전송한 응답을 처리할 수 있다.
● 테스트
요청 전송에 대한 응답 처리를 해줄 수 있는 가짜 서버를 만들어서 사용 방법을 배워보자. 여기서는 JSONPlaceholder(https://json-placeholder.typicode.com/)라는 테스트를 위한 가짜 서비스를 이용하였다.
JSONPlaceholder 에서는 다음과 같이 테스트를 위한 리소스를 제공한다.
ㆍ/posts
ㆍ/comments
ㆍ/albums
ㆍ/photos
ㆍ/todos
ㆍ/users
다음과 같이 open() 함수의 URL에 " https://json-placeholder.typicode.com/"를 인수로 넘기면 100개의 데이터를 받아오게 된다.
전체 데이터 중 특정 id에 해당하는 데이터만 가져오고 싶다면 요청 URL을 다음과 같이 작성하면 된다.
https://json-placeholder.typicode.com/posts/:id
만약 id가 1번인 데이터를 가져오고 싶다면, https://json-placeholder.typicode.com/posts/1 로 호출하면 된다.
이번에는 데이터를 생성해보록 하자.
이번에는 id가 1인 데이터를 수정해보자.
id가 1인 데이터를 삭제해보자.
요청한 것에 대해 응답이 성공(status: 200)으로 와서 밑에 에러 로그가 아닌 정상적인 로그가 콘솔에 찍힌 것을 볼 수 있다.
'02. JavaScript > 01. 기본개념, 문법 (ES6)' 카테고리의 다른 글
JavaScript_02. 문법_13_01. Promise (0) | 2023.11.23 |
---|---|
JavaScript_02. 문법_12_Fetch API (0) | 2023.11.22 |
JavaScript_02. 문법_10_Array Destructuring (0) | 2023.11.17 |
JavaScript_02. 문법_09_Object Destructuring (0) | 2023.11.17 |
JavaScript_02. 문법_08_Spread Operator (0) | 2023.11.17 |