전체적인 흐름을 살펴보자.
1.유저가 이메일을 입력한다.
Email Input의 onChange
함수가 실행된다.
2. onChange
함수에서 Email Input의 value를 setState
를 통해 업데이트 한다.
3.유저가 비밀번호를 입력한다. Password Input의 onChange
함수가 실행된다.
4.onChange
함수 안에서 Password Input의 value를 setState
를 통해 업데이트한다.
5.Button을 클릭하면 onClick함수가 실행된다.
6.onClick
함수 안에서 fetch
함수를 통해 server에 요청(Request)을 보낸다.
7.server에서 인증/인가 과정을 거친 후의 결과를 응답(Response)으로 보내준다.
8.응답의 결과에 따라 Main 페이지로 이동하거나 에러 메시지를 띄운다
-->client
클라이언트가 요청을 보내면 서버에서 응답이 온다.
fetch("api주소",{
method:"POST",
body: JSON.stringify({
email: this.state.id,
password: this.state.pw, 여기서 이메일 패스워드는 백엔드랑 약속한 것임
}),
})fetch실행을 JS 다른애한테 준다. 이걸하는동안 다른 걸 실행한다.
.then((response) => response.json())//첫번째 then에서는 server에서 보내준 response를 object형태로 변환한다.
.then((result) =>console.log("결과:",result));
//2번 째 then에서는 object로 변환한 response를 console.log로 확인한다.
then이 붙으면 fetch가 실행되는 걸 기다린 다음 then이 실행되는 것임 1번 째 then 그 다음 2번째 then 실행
fetch는 오래걸린다. 그러나 then만큼은 fetch를 기다린다.
json.parse 랑 response.json의 차이는?
response안에는 백엔드에서 주는 모든 정보가 다 담겨있다.
이걸 json으로 바꿔주는 것임.
response.json에 대한 리턴 값이 result로 간다.
result에서는 오브젝트로 들어와있음을 확인할 수 있다.
백앤드로부터 데이터를 받아오려면 api를 호출하고 데이터를 응답받는다. 이때 자바스크립트 Web API fetch()함수를 쓰거나 axios 라이브러리를 사용할 수 있다.