본문 바로가기
React

React / Spring 통신

by KDW999 2023. 3. 27.

앞서 React로 만들어 놓았던 웹 페이지와 Spring의 통신

 

react 파일에 설치

 

npm install axios

axios → node기반 js 프로젝트에서 http 통신시켜줌

npm install react-cookie
cookie 로그 남길 때 

 

이전에 만들어 둔 회원가입 페이지 연동

 console.log('axios 이전☆')

    // js는 비동기 처리 → 작업 중 대기 시간을 기다리지 않고 따로 작동시켜놓고 다음 작업으로 넘어감
    // 통신을 위한 axios, post : backend의 주소 담기, then : 작업 처리, catch : 에러 처리
    //? 1. 비동기 처리 (then 방법)
    axios.post(SIGN_UP_URL, data)
    .then((response) => {
      const { result, message, data } = response.data as ResponseDto<SignUpresponseDto>; 

      if(result) setLoginView(true);
      else alert(message);
      
    })
    .catch((error) => { 
      console.log(error.response.status);
    });

    // await : 작업이 끝날 때 까지 기다리기 → 동기 처리
    // 호출되는 함수의 매개변수 앞에 async 붙여서 동기처리 해줘야됨
    // 도중에 에러 터지면 다음 작업 실행하지 않음
    // const response = await axios.post("http://localhost:4040/auth/sign-up", data);

    console.log('axios 이후★')

 

로그인 페이지 연동

axios.post(SIGN_IN_URL, data)
      .then((response) => {
        const { result, message, data } = response.data as ResponseDto<SignInResponseDto>;

        if (result && data) {
          const { token, expiredTime, ...user } = data;
          //? 로그인 처리
          //? 쿠키에 로그인 데이터 (Token) 보관
          const now = new Date().getTime();
          const expires = new Date(now + expiredTime);
          setCookie('accessToken', token, { expires });

          //? 스토어 유저 데이터 보관
          setUser(user);
          navigator('/');

          alert('로그인 성공');
        }
        else alert('로그인 정보가 잘못되었습니다.');
      })
      .catch((error) => { // 에러 처리는 여기에 한 번에 다 몰아서하는 것 보단 할 수 있는 건 위에서 걸러주고 들어오기?
        console.log(error.message);
      });

 

axios로 통신하려면 react / spring 두 군데다 서버켜줘야한다.

난 하나의 창으로 2개 다 키려니 실행이 안되서 창 2개 켜서 실행시켜주었음

'React' 카테고리의 다른 글

React / typescript 카카오 지도 api 사용  (0) 2023.04.18
React 토큰 로그인 유지  (0) 2023.03.29
[공부] Hook 함수  (1) 2023.02.23
[공부] JSX와 TSX  (0) 2023.02.21
[공부] 타입스크립트 문법 및 개념 ES6 TypeScript  (0) 2023.02.21

댓글