fetch('api주소', {
method: '...',
headers: { 'key': 'value' },
body: JSON.stringify({ 'key': 'value' }),
}) //요청
.then((response) => response.json())
.then((data) => console.log(data));
//응답
fetch의
headers: {
'Content-Type': 'application/json;charset=utf-8',
Authorization: localStorage.getItem('accessToken'),
},
body: JSON.stringify({
title: 'update title',
content: '서버에 요청할때 담아서 보내는 정보',
})
JSON.stringify:
body에 담긴 정보를 서버로 보낼 때 데이터 형태를 JSON 형태로 보내고 받아야 하는데, JSON으로 형 변환을 해주는 메서드
why JSON?:
통신 간, 서버와 클라이언트는 같은 언어일 때 주고 받을 수 있다. JSON 형태는 어떤 언어에서든 원하는 데이터를 주고받을 수 있다. JSON의 형태는 자바스크립트의 객체와 유사하지만, javascript가 아니더라도 JSON을 읽고 쓸 수 있는 기능은 대부분 언어에서 제공된다. javascript와 python이 데이터를 주고받을 때도 JSON 형태 라면 주고받을 수 있다.
// JSON.stringify 메서드 인자에 data 담기
JSON.stringify({
title: 'update title',
content: '서버에 요청할때 담아서 보내는 정보',
});
// JSON 문자열
{ "title": "update title", "content": "서버에 요청할때 담아서 보내는 정보" }
=> 통신과정은 동기적인 처리 순서에 영향을 주지 않도록 비동기로 처리해야 하고, 그래서 fetch 함수는 비동기로 동작함
// .then() 메서드 문법
.then(function onFullfilled, [function onRejected])
//응답
.then((response) => response.json())
.then((data) => console.log(data));
*첫번째 then 예시
.then((response) => {
if (response.ok === true) {
return response.json(); //response의 body(JSON 형태)를 자바스크립트 객체로 변환해 주는 메서드
}
throw new Error('에러 발생!'); //통신에 실패할 경우 error를 throw
})
.catch((error) => console.log(error)); //throw된 error를 받아서 console에 출력
-> response로 응답받은 status 코드에 따라 처리 방법을 나눌 수 있음
통신에 성공해서 JSON을 객체로 변환했다면, 변환된 객체를 활용해서 분기 처리할 수 있다.
*두번째 then 예시
.then((data) => {
if (data.message === 'login success') {
localStorage.setItem('TOKEN', data.token);
alert('로그인 성공');
} else {
alert('로그인 실패');
}
});