웹/React

[React] 데이터 flow & axios

ohojee 2023. 8. 3. 16:14

로그인을 예로 들자면
유저(클라이언트)가 로그인을 하고 싶다 -> 클라이언트에서 아이디, 비밀번호 입력 후 로그인 버튼을 누르면 서버로 요청 전달 -> 서버에서는 데이터베이스에 아이디가 있는지 찾은 후 있다면 비밀번호가 맞는지까지 탐색 -> 맞다면 res를 있다고 전달, 없다면 없다고 전달 하는게 데이터의 흐름
 
그동안은 클라이언트가 없기 때문에 postman으로 요청을 보냈었음
하지만 지금은 클라이언트가 생겼기 때문에 axios라는 라이브러리를 이용해 요청을 보낼 수 있음
jQuery를 사용할 때 AJAX같은 역할

npm install axios --save
// landingpage.js

import axios from 'axios';
import { useNavigate } from 'react-router-dom'

function LandingPage() {

	useEffect(() => {
	  axios.get('/api/hello')
	  .then(response=> { console.log(response.data) })

	}, [])
	
  return (
	<div>
    	Landing Page
    </div>
  )
}

랜딩페이지에 들어오자마자 useEffect를 실행할건데 이건 .get 요청을 보내면 서버의 응답을 콘솔에 찍어주는 코드
axios.get('/api/hello') 이 엔드포인트를 서버로 보내면 index.js에 .get('/api/hello') 라우터가 있어야 받을 수 있음

// server/index.js

app.get('/api/hello', (req, res) => {
	res.send("안녕하세요~")
})

이렇게 client와 server 코드를 수정 후 실행하면 오류가 생김
왜? 현재 설정된 포트는 클라이언트 3000, 서버 5000
그래서 axios.get('/api/hello') 이렇게 요청을 보내도 3000번으로 요청이 가기에 서버가 받지 못하는 상황
포트가 다른데 어떠한 설정을 해주지 않으면 CORS 설정 때문에 막힘