react와 express의 통신
중요한 정보
<npm init>
으로 package.json을 깔아주자.
3. 그 후 ,
<npm i express>
로 express 설치해주자.
server내에 app.js를 제작 -> 여기에 , express 서버 코드를 짤것이다.
이 부분은 , npm 공식 사이트에서 자세한 설명이 나와있다.
예)
todolist api구축해보기
<const todoList = [] >
으로 server메모리에다가 저장하기
이때 , 저장된 데이터를 받고 새로운것을 저장시키기 위해서 아래와 같은 코드를 사용한다.
<app.get>
<app.post>
<app.listen>
사용한다.
데이터가 잘 post되는지 ,get되는지 확인하는 방법 중 하나로 postman이라는 플랫폼이 있다.
<npx create-react-app .>
을 이용해서 react코드 생성하기
<div>todolist</div>
<npm start>
- fetch api 사용
- axios 라이브러리 사용
위 방법에서 공통적으로 필요한 것은 크게 두가지이다.
1. fetch api
데이터를 주고 받을떄 에러가 발생할 것이다.
-> "CORS ERROR"
CORS ERROR 란 쉽게 URL 주소가 다르면 데이터를 줄 수 없게 하는 정책이다.
좀 더 쉽게 설명하면 , NAVER 와 GOOGLE의 도메인 주소는 엄연히 다른데 이때
데이터를 가져가게 되면 문제가 되는 것처럼
흔히
Client 주소
server 주소
인것처럼 이는 출처 (origin)이 다른것이다.
그렇기 때문에 , cors 정책을 풀어줄 방법이 필요하다.
client 와 server 중 server 가 데이터를 제공해주는 입장이기 떄문에 ,
여기서 정책을 풀어주는 것이 필요하다.
app.use(cors())
이를 통해 정책을 풀어줄 수 있다
하지만 , 이떄 상태가 계속 바뀌면서 무한루프가 될 수 있기때문에
const fetchData = () => {
fetch('http://localhost:4000/api/todo')
.then((response) => response.json())
.then((data) => setTodoList(data));
}
useEffect(() => {fetchData()} , [] );
이런식으로 만들어준다.
<form onSubmit={onSubmitHandler}>
const onSubmitHandler = (e) => {
e.preventDefault();
const text = e.target.text.value;
const done = e.target.done.checked; //done을 체크했을때 에스 노로 인식하게끔 해준다
fetch("http://localhost:4000/api/todo", {
method: 'post',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
text,
done,
}),
}).then(()=> fetchData());
};
기본동작을 막아주는 것
method : 기본은 get이고 , post등을 설정해 줄 수 있다.
body : json.stringify() 로 body로 데이터를 받는다
headers : content-type : aplication/json을 해줘야 오류 방지
화면에 데이터가 바로 나올 수 있게 하는 방법
npm i axios
import axios from 'axios' ;
axios.get('url').then((response) => {setTodoList(response.data)});
추가로 ,
async , await 사용하기
-> 깔끔하게 구현 가능
위 방법을 통해 실제 데이터베이스에 있는 데이터는 아니지만 ,
서버와 클라이언트와 통신하는 방법에 대해서 이해 할 수 있었다.
더 나은 개발이 되길 바라며:)