Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- BOJ #컴퓨터공학 #C++ #알고리즘 #자료구조
- 잔
- HTML #CSS
- 컴퓨터공학 #c #c언어 #문자열입력
- 컴퓨터공학 #Java #자바 #클래스 #객체 #인스턴스
- 컴퓨터공학 #자료구조 #스택 #c++ #알고리즘 #백준문제풀이
Archives
- Today
- Total
영벨롭 개발 일지
[React] 리액트 블로그 - 시작 & 서버 연동 본문
[ 서버 생성 ]
서버 폴더를 에디터를 사용하여 열어줍니다. 저는 서브 폴더명을 blog-server로 했습니다.
다음 명령어를 사용하여 서버 구축에 필요한 패키지와 파일을 생성합니다.
$ npm init -y
$ npm i express
$ npm i cors
blog-server 폴더 내부에 server.js 파일을 생성하여 다음과 같이 입력합니다.
// blog-server/server.js
const express = require('express');
const path = require('path');
const app = express();
const cors = require('cors');
const PORT = 8080; // 서버의 포트번호 -> http://localhost:8080
// 서버단에서 리액트와 nodejs 간 ajax 요청이 잘 되려면 cors 설치해야함
// cors는 다른 도메인 주소끼리 ajax 요청 주고받을 때 필요
app.use(cors());
// localhost:8080 에 { "host": "ahyoung" } 보내기
app.get('/', (req, res) => {
res.send({ host: 'ahyoung' });
});
// 웹 서버 만들기
app.listen(PORT, function(){
console.log(`listening on ${PORT}`);
})
서버를 실행하고 싶다면 다음 명령어를 입력합니다.
$ node server.js
[ 리액트 앱 생성 ]
blog-server 위치에서 다음 명령어를 입력하여 리액트 앱을 생성합니다.
$ npx create-react-app myblog
myblog 디렉토리로 이동하여(저는 에디터를 따로 열었습니다) axios를 설치합니다.(fetch와 동일 기능)
$ cd myblog
$ npm i axios
[ 테스트 ]
리액트 앱의 App.js를 다음과 같이 수정합니다.
// myblog/src/App.js
import React, { useState, useEffect } from 'react';
import axios from 'axios';
const server = 'http://localhost:8080';
const App = () => {
const [host, setHost] = useState('');
const sendRequest = async() => {
const response = await axios.get(server);
console.log(response);
console.log(response.data);
setHost(response.data.host);
}
useEffect(()=>{
sendRequest();
}, []);
return (
<div>
<h1>서버 연결, host: {host}</h1>
</div>
);
};
export default App;
blog-server 폴더로 돌아와 서버를 구동합니다.
// blog-server
$ node server.js
myblog 폴더로 돌아와 리액트 앱을 실행합니다.
// blog-server/myblog
$ npm run start
반응형