React + express 연동설정. 처음부터 따라하기
React + express 연동설정. 처음부터 따라하기
React, Express 연동하여 사용하기
일단 react app 을 하나 생성합니다. 이름은 cs-test
cmd 로 프로젝트를 생성할 폴더로 가서
npx create-react-app cs-test # 설치 다되면 # 폴더로 이동해서 cd cs-test #npm 프로젝트설정 npm init #기본설정으로 계속 Enter # 일단 실행해봅니다. npm start
그럼 익숙한 웹페이지가 뜹니다.
express 도 추가해 둡니다.
npm add express --save
서버에서 json 형식으로 데이터를 주고받을 거기때문에 body-parser 도 설치해줍니다.
npm install body-parser
그리고 사용하시는 에디터로 소스를 열어서 수정합니다.
src 아래에 App.js 를 수정합니다.
import React from 'react'; import logo from './logo.svg'; import './App.css'; class App extends React.Component { constructor(props) { super(props); this.state = { username:null }; } render() { const {username} = this.state; return ( {username ? `Hello ${username}` : 'Hello World'} ); ; } } export default App;
이러면 페이지에 Hello World 가 표시되겠죠.
저 username 을 서버단에서 받아오도록 해보겠습니다.
root 에서 servers 라는 폴더를 만들고
server.js 파일을 생성합니다.
const express = require('express'); const app = express(); const bodyParser = require('body-parser'); const port =process.env.PORT || 3001; app.use(bodyParser.json()); app.use('/api', (req, res)=> res.json({username:'bryan'})); app.listen(port, ()=>{ console.log(`express is running on ${port}`); })
이렇게 하고 프로젝트 root 에서 express 만 실행해봅니다.
C:\dev
odeProjects\cs-test>node ./servers/server.js express is running on 3001
웹페이지에서 확인. http://localhost:3001/api
{"username":"bryan"} 라고만 나옵니다. 된겁니다. ㅎ
이제 client 쪽에서 이 데이터를 받아와야겠죠.
App.js 에서 componentDidMount() 를 추가합니다.
componentDidMount() { fetch('http://localhost:3001/api') .then(res=>res.json()) .then(data=>this.setState({username:data.username})); } render(){ // ... }
그리고 ctrl+s 눌러서 저장하면 (webstorm 기준) 페이지가 새로고침되죠.
(다른 에디터 쓰시는분들 중 안되시는분들은 Ctrl+C로 중지하고 다시 npm start 하세요)
결과는~
오류. ㅎㅎ
Access-Control-Allow-Origin 관련 오류죠. 도메인이 다른곳에서 요청이 왔기때문에 허용안함! 이라고 서버쪽에서 막아둔것입니다.
이건 서버가 어디까지 api를 제공할 것인가에 따라 보안으로 막을수도 있고 열수도 있습니다.
일단 테스트니까 cors 를 허용하는 방법으로 해보겠습니다.
server.js 에서 cors 를 사용할것이기 때문에 우선 설치.
npm install cors --save
그리고 server.js 수정
const express = require('express'); const app = express(); const cors = require('cors'); const bodyParser = require('body-parser'); const port =process.env.PORT || 3001; app.use(cors()); app.use(bodyParser.json()); app.use('/api', (req, res)=> res.json({username:'bryan'})); app.listen(port, ()=>{ console.log(`express is running on ${port}`); })
서버 재시작. (Ctrl+C 후에 node ./servers/server.js )
react 페이지 새로고침하면
원하던 결과가 나왔습니다.
React 에서 nodejs 의 데이터를 가져와서 뿌려준것이죠.
이제 nodejs 에서 database 에 연결해서 데이터를 불러오면 react-node-db 연결이 되겠죠.
여기서 좀더 간단하게!!
지금은 react 를 npm start 하고, node ./servers/server.js 로 start 하고 cross access 허용하고.. 좀 복잡한데 이걸 한번에 할 수 있는 방법이 있습니다. 다음글에~
2020/01/17 - [React,Node,js] - React + express 연동설정. 처음부터 따라하기 2
from http://hello-bryan.tistory.com/121 by ccl(A) rewrite - 2020-03-06 14:20:34
댓글
댓글 쓰기