회원가입/로그인 기능을 구현하기 위해서는 백엔드와의 통신이 필요하다.
따라서 fetch에 대해 더 자세히 알아보고 실제로 어떤 데이터들을 받아오는지 알아보자
method
mode
credentials
omit
same-origin
include
cache
redirect
referrer
referrerPolicy
integrity
keepalive
signal
등의 key와 각각 해당하는 value를 넣을 수 있다.// fetch의 구조예시
fetch('api주소', {
method: '...',
headers: { 'key': 'value' },
body: JSON.stringify({ 'key': 'value' }),
}) //요청
.then((response) => response.json())
.then((data) => console.log(data));
//응답
fetch는 크게 요청과 응답 부분으로 나눌 수 있는데 여기서는 두 번째 인자로 전달하는 객체의 key 중에 자주 사용하는 method
, headers
, 그리고 body가 있는 요청
과 body가 없는 요청
으로 나눠서 알아보자.
path Parameter
와 query Parameter
가 존재한다는 것이다.url자원으로 한정된 일관적인 인터페이스(uniform interface)를 구현하는 것으로 자원 조작을 톨일하는 것이 좋다.
일반적으로 HTTP를 구성하는 URL, HTTP method, Status Code를 통해 인터페이스를 구현한다.
slash('/')
를 사용한다.fetch('API주소', {
method: 'POST',
});
body에는 서버에 요청할 때 보낼 실질적인 정보를 담습니다. 여기서 요청 body가 있는 경우와 없는 경우로 나눌 수 있다.
//POST - body 예시
fetch('API 주소', {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=utf-8',
},
body: JSON.stringify({
title: 'update title',
content: '서버에 요청할때 담아서 보내는 정보',
}),
});
*body에 담긴 정보를 서버로 보낼 때 데이터 형태를 JSON 형태로 보내고 받아야 하는데, JSON으로 형 변환을 해주는 메서드가 JSON.stringify
이다.
// fetch 요청 전문 예시
fetch('API주소', {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=utf-8',
},
body: JSON.stringify({
title: 'update title',
content: '서버에 요청할때 담아서 보내는 정보',
}),
})
//요청
.then((response) => response.json())
.then((data) => console.log(data));
//응답
//두번째 응답 분기처리 예시
fetch('로그인 API', {
method: 'post',
body: JSON.stringify({
id: 'qawsedrf',
password: '123456',
}),
})
.then((response) => {
if (response.ok === true) {
return response.json();
}
throw new Error('에러 발생!');
})
.catch((error) => console.log(error))
.then((data) => {
if (data.message === 'login success') {
localStorage.setItem('TOKEN', data.token);
alert('로그인 성공');
} else {
alert('로그인 실패');
}
});
//data 예시
data: {
message: 'login success',
token: 'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjo1fQ.Dy3PPHIOFFe3ScGTb8x3hewItnpOcgC9YDdW7v27XHg',
},