Fetch
JavaScript에서 서버로 네트워크 요청을 보내고 응답을 받을 수 있도록 해주는 매서드이다. XMLHttpRequest와 비슷하지만 fetch는 Promise를 기반으로 구성되어 있어서 더 간편하게 사용할 수 있다는 차이점이 있습니다.
XMLHttpRequest란?
XMLHttpRequest를 이용하면 웹 페이지를 전부 로딩하고도 서버로부터 데이터를 요청하거나 전송받을 수 있으며, 웹 페이지를 전부 로딩하지 않고도 일부만을 갱신하는 게 가능해진다. 따라서, AJAX는 JavaScript를 사용한 비동기 통신, 클라이언트와 서버 간에 XML 데이터를 주고받는 기술이라고 할 수 있다.
기본 구조
fetch(url)
.then(res => {
console.log(res)
})
.catch(error => {
console.log(error)
})
기본적인 구조와 동작은 Promise 객체와 동일하다.
요청 정보 파라미터
fetch의 두 번째 파라미터로 요청에 대한 추가적인 데이터를 입력할 수 있습니다.
fetch(url, {
method: 'post',
headers: {
"Content-type": "application/json; charset=UTF-8"
},
body: 'memberId=id001&memberName=myName'
})
.then(res => {
console.log(res);
})
.catch(error => console.log(error));
- method : HTTP method와 동일하며 요청 방식을 나타낸다. (GET, POST, PUT, DELETE 등)
- headers : 요청 헤더에 대한 정보를 나타낸다.
- body : 요청을 보내는 데이터를 나타낸다. 여러 가지 자료형을 대입할 수 있다.
GET 요청
fetch("https://jsonplaceholder.typicode.com/posts/1")
.then((response) => response.json())
.then((json) => console.log(json))
response는 promise타입으로 반환되며 response.json()은 데이터를 자바스크립트 객체타입으로 반환해줍니다.
POST 요청
fetch(url, {
method: 'POST',
body: JSON.stringify({ name: "Test" })
})
.then(res => {
if (res.status === 200) {
res.text().then(text => console.log(text)
}
else {
console.log(res.statusText)
}
})
.catch(error => console.log(error))
- POST로 body안에 데이터를 넣고, 요청을 보내주면 응답 객체 res를 받게 되는데 res 안에는 응답에 관한 정보가 존재한다.
- status는 요청이 성공인지 실패인지를 판별할 수 있게 해주는 요소이다.
- 응답에 대한 내용은 res.text()를 통해 확인할 수 있다.
- text() 외에도 arrayBuffer, blob, json, formData 등의 메서드를 사용하여 값을 볼 수도 있다.
- GET, PUT, DELETE 요청도 같은 방식으로 보낼 수 있다.
- 단, GET, DELETE 요청은 url 파라미터 하나만 입력하여 사용한다.
'코딩 공부 > JavaScript' 카테고리의 다른 글
[React] React.js (0) | 2023.11.24 |
---|---|
[JS] Axios (0) | 2022.12.11 |
[JS] Promise (0) | 2022.11.30 |
[JS] AJAX (0) | 2022.11.27 |
[JS] JSON (0) | 2022.11.23 |