서버와 상호작용하기 위한 내장객체
브라우저 환경에서 동작한다.
1. 객체 생성
2. 요청 전송(HTTP 메소드, URL)
3. 헤더값 정의
4. 통신 요청
5. 데이터 받기
//1. 객체 생성
const xhr = new XMLHttpRequest();
//2. 요청 전송 GET
xhr.open("GET","https://jsonplaceholder.typicode.com/posts")
//3.헤더값 정의
xhr.setRequestHeader("content-type","application/json")
//4.통신 요청
xhr.send();
//5. 데이터 받기
xhr.onload= () =>{
if(xhr.status===200){ //응답 데이터가 정상적(200)이면
const res = JSON.parse(xhr.response); //xhr의 응답을 객체로 변환시켜 받는다.
console.log(res);
}else {
//응답 데이터가 정상적(200)이 아닐 경우 출력한다.
console.error(xhr.status, xhr.statusText)
//응답 상태 번호와 응답메시지를 출력한다.
}
}
링크의 리소스를 조회, 출력했다.
//1. 객체 생성
const xhr= new XMLHttpRequest();
// 2. 요청전송 POST
xhr.open("POST","https://jsonplaceholder.typicode.com/posts");
// 3.헤더값 정의
xhr.setRequestHeader("content-type","application/json; charser=UTF-8");
//4. 통신요청
xhr.send(JSON.stringify({title:"foo",body:"bar",userID:1}));
//5. 데이터 받기
xhr.onload=()=>{
if(xhr.status===201){
const res= JSON.parse(xhr.response)
}
}
링크에 리소스를 생성, 생성된 리소스를 조회했다.
const xhr = new XMLHttpRequest();
생성자 함수를 이용하여 생성한다.
xhr.open("GET","https://jsonplaceholder.typicode.com/posts")
xhr.setRequestHeader("content-type","application/json")
MIME 타입 | content-type 값 | 목적 |
---|---|---|
application | application/json | json데이터 전송 |
text | text/plain | text 데이터 전송 |
multipart | multipart/form-data | 파일 전송 |
데이터의 타입에 따라
xhr.send(data);
data는 request의 body에 담겨서 전송이 된다.
xhr.send();
xhr.onload= () =>{
if(xhr.status===200){
//200은 404와 같은 응답 데이터이다.
const res = JSON.parse(xhr.response);
//json 형태를 자바스크립트에서 사용 가능한 객체형태로 변경해서 반환한다.
}else {
//응답 데이터가 정상적(200)이 아닐 경우 출력한다.
console.error(xhr.status, xhr.statusText)
//응답 상태 번호와 응답 메시지를 출력한다.
}
}
let dog={
name: "구름",
age: 3,
hobby: "공놀이",
}
let json= JSON.stringify(dog);
console.log(dog);
/*👉 Object{
age: 3
hobby: "공놀이"
name: "구름"
}*/
console.log(json);
//👉 {"name":"구름","age":3,"hobby":"공놀이"}
객체가 JSON 타입으로 변경되었다.
let dog2= JSON.parse(json);
console.log(dog2);
/*👉 Object{
age: 3
hobby: "공놀이"
name: "구름"
}*/
JSON타입이 객체로 변경되었다.
{
"name":"green",
"age":30,
}
위와 같은 형태를 띈다.