자바스크립트를 사용하면 필요할 때 서버에 네트워크 요청을 보내고 새로운 정보를 받아오는 일을 할 수 있다.
let promise = fetch(url, [options])
fetch()를 호출하면 브라우저는 네트워크 요청을 보내고 프라미스가 반환된다.
📝 코드로 알아보는 fetch
let result = fetch(serverURL);
result
.fetch(response => {
if(response.ok) {
//요청 성공
}
})
.catch(error => {
// 요청 실패
})
네트워크 요청 성공 시 Promise는 Response 객체를 resolve 한다.
네트워크 요청 실패 시 Promise는 Response 객체를 reject 한다
let url = 'https://api.github.com/repos/javascript-tutorial/ko.javascript.info/commits';
let response = await fetch(url);
let commits = await response.json(); // 응답 본문을 읽고 JSON 형태로 파싱함
alert(commits[0].author.login);
response.text() : 응답을 읽고 텍스트를 반환
response.json() : 응답을 JSON 형태로 파싱
response.formData() : 응답을 FormData 객체 형태로 반환
프라미스만 사용
fetch('https://api.github.com/repos/javascript-tutorial/en.javascript.info/commits')
.then(response => response.json())
.then(commits => alert(commits[0].author.login));
$ Response
fetch(response => {
response.ok
response.status
response.statusText
response.url
response.bodyUsed
})
Reponse 객체는 결과에 대한 다양한 정보를 담는다.
Status code가 200-299 사이면 true, 그 외는 false
response.url은 요청한 URL 정보를 담고 있다.
fetch(response)
.then(resp => {
for(let [k, v] of resp.headers) {
console.log(k, v);
}
})
response.headers로 Response 객체의 헤더 정보를 얻을 수 있다.
fetch(serverURL)
.then(response => {
return response.json()
})
,then(json => {
console.log("body : ", json);
})
fetch(serverURL, {
method: 'post',
headers: {
'Content-Type': 'application/json; charset=utf-8',
Authentication: 'mysecreat'
},
body: JSON.stringify(formData)
})
.then(type => type.json()) // 어떤 date type으로 파싱해줄건지
.then(json => { //파싱해준 데이터를 처리해주는 코드
console.log("POST 요청 결과", json);
})
fetch(url, options)로 fetch
일반적인 fetch 요청은 두 개의 await 호출로 구성된다.
let response = await fetch(url, options); // 응답 헤더와 함께 이행됨
let result = await response.json(); // json 본문을 읽음
response.text() : 응답을 텍스트 형태로 반환함
response.json() : 응답을 파싱 해서 JSON 객체로 변경