ํ๋ฃจ์ข ์ผ ์ฝ์งํ๊ฑฐ ์ ๋ฆฌํฉ๋๋ค. ๋ถ๋ช ์ธ์ ๊ฐ ๋ ์ธ๊ฒ์ด์ด๋....
์ฐ์ vscode๋ก ์์ฑํ์์ต๋๋ค.
vscode ํฐ๋ฏธ๋์์
npx create-react-app lasttest
lasttest๋ ํ๋ก์ ํธ ์ด๋ฆ์ ๋๋ค.
๋ง๋ ํ ํฐ๋ฏธ๋์์ ํด๋น ํ๋ก์ ํธ ๋ฃจํธ ๊ฒฝ๋ก์์ npm start๋ก ์คํ์ด ๋๋์ง ํ์ธํฉ๋๋ค.
์ด ์น๊ตฌ๊ฐ ๋ฌ๋ค๋ฉด ๋ฐ๋ก node.js๋ ์ฐ๋ํ ๊ฒ์.
npm install express --save
์ค์นํด์ฃผ์ธ์ express๋ NodeJS์ ์นํ๋ ์์ํฌ ์ ๋๋ค. ๊ฐํธํ๊ฒ ์น์๋ฒ๋ฅผ ๊ตฌ์ถํ ์ ์์ฃ
๊ทธ๋ค์์ ์๋ฒ์ ํด๋ผ์ด์ธํธ ํด๋๋ฅผ ๋๋์ด ์ค๊ป๋ฐ์ root๊ฒฝ๋ก์ serverํด๋๋ฅผ ๋ง๋ค์ด์ค ๋ค์์
server.js ํ์ผ์ ๋ง๋ค์ด์ฃผ์ธ์
const express = require('express');
const app = express();
const api = require('./routes/index');
const bodyParser = require('body-parser');
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.use('/api', api);
const port = process.env.PORT || 3001;
app.listen(port,()=>console.log(`Listening on port ${port}`));
port๋ฒํธ๋ ๋ฌ๋ผ๋ ์๊ด์์ต๋๋ค. ์ผ๋จ ์ด๋ ๊ฒ ์์ฑํ ๋ค์์ 3๋ฒ์งธ ์ค์ ์๋ routes/index๋ฅผ ๋ง๋ค์ด์ค๊ฒ์
๋ง๋ค์ด๋ serverํด๋์ routes/index.js ๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์
var express = require('express');
var router = express.Router();
var mysql = require('mysql');
const connection = mysql.createConnection({
host:'',
port:,
user:'',
password:'',
database:''
});
connection.connect();
router.get('/api',function(req,res){
res.send({greeting:'Hello'});
});
module.exports = router;
npm install --save mysql
mysql์ ์ฌ์ฉํ๊ธฐ ์ํด ์ค์นํด์ค๋๋ค.
connection๋ณ์์ mysql ์ ๋ณด๋ฅผ ๋ฃ์ด์ฃผ๋๋ฐ ์๋ ๋ฐ๋ก ๋นผ์ ๋ฐ์ธ๋ฉํด์ ๊ฐ์ ธ์ค๋๊ฒ ์ข์ง๋ง... ๊ณต๋ถ์ฉ์ผ๋ก ์ฝ๊ฒ ๋ณด๊ธฐ ์ํด ์ค์ ํด์ฃผ์์ต๋๋ค.
'' ์์๋ DB์ ๋ณด ์์ฑํด์ฃผ์๋ฉด ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ Router์ ์ด์ฉํ์ฌ url์์ฒญ์ด ๋ค์ด ์์๋ ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ค์ง ์ค์ ํด์ค๋๋ค. ์ ๋ Hello๋ฅผ ๋ฐ์์ฌ๊ฒ์
๋ง์ฝ ์ฟผ๋ฆฌ๋ฅผ ์์ฑํด db์ ๋ณด๋ฅผ ๋ฐ๊ณ ์ถ์ผ์๋ค๋ฉด
router.get('/project/select', function(req,res){
connection.query('SELECT ID,NAME,AGE FROM user', (err, rows,fields) => {
res.send(rows);
})
});
์ด๋ฐ์์ผ๋ก ์จ์ฃผ๋ฉด ๋ฉ๋๋ค!
์ด์ ์๋ฒ์์ ๋ณด๋ด์ค ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ์์ ๋ฐ๊ธฐ ์ํด Proxy๋ฅผ ์ค์ ํด์ค๊ฒ๋๋ค.
๋จผ์ ๋ฏธ๋ค์จ์ด๋ฅผ ์ค์นํด์ค๊ฒ์!
npm install http-proxy-middleware --save
src ๊ฒฝ๋ก์ setupProxy.js ๋ฅผ ๋ง๋ค์ด์ค๋๋ค.( ์ด๋ฆ์ ๊ผญ ์ง์ผ์ผ ํฉ๋๋ค )
์ด๊ฑธ๋ก ์ฝ์ง์ ์กฐ๊ธ ํ๋๋ฐ ํ์๋ฒ์ ์์๋ ๋ค๋ฅด๊ฒ ์ฐ๋๊ฑธ ์ฐพ์์ ์ป๋ค๊ฐ ์ค๋ฅ๊ฐ ์๊ฒผ์์ต๋๋ค...
const{ createProxyMiddleware }= require('http-proxy-middleware'); ๋ฅผ ๊ผญ ์ง์ผ์ฃผ์ธ์ฅ
proxy ์ค์ ์ ์ถ๊ฐํด์ค์ผ๋ก /api๋ก ์์๋๋ API๋ target์ผ๋ก ์ค์ ๋ ์๋ฒ URL๋ก ํธ์ถํ๋๋ก ์ค์ ๋ฉ๋๋ค.
+
server.js์์ ์ค์ ํด์ค app.use('/api', api); ํ์ธ!
const { createProxyMiddleware } = require('http-proxy-middleware');
module.exports = function(app){
app.use(
createProxyMiddleware('/api', {
target: 'http://localhost:3001/',
changeOrigin: true
})
)
};
๋ค์์ ์๋ฒ์ ํด๋ผ์ด์ธํธ๊ฐ ๋์์ ์คํ๋ ์ ์๊ฒ ํด์ค๊ฒ์.
node ./server/server.js๋ฅผ ์คํํด์ ์๋ฒ๊ฐ ์ ์๋ํ๋์ง ํ์ธํด์ฃผ์ธ์
์ด์ ์๋ฒ, ํด๋ผ์ด์ธํธ ๋์ ์คํ์ ์ํด ctrl+c๋ฅผ ๋๋ฌ ์๋ฒ๋ฅผ ๋ซ์์ฃผ์๊ณ
npm install npm-run-all -D ๋ฅผ ์ค์นํด์ฃผ์ธ์!
+
์ค์นํ๋ค๊ฐ match์ด์ฉ๊ณ ํ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๋ฃจํธ ๊ฒฝ๋ก์ ์๋ package-lock.json์ ์ญ์ ํ๊ณ ๋ค์ ์ค์นํด๋ณด์ธ์!
๋ฃจํธ ๊ฒฝ๋ก์ ์๋ package.json์ scripts ๋ถ๋ถ์ ๋ณ๊ฒฝํด์ฃผ์ธ์
"scripts": {
"start": "npm-run-all --parallel start:**",
"start:clinet": "react-scripts start",
"start:server": "node ./server/server.js",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
์ ์ฅํ์๊ณ npm start๋ฅผ ํ๋ค๋ฉด
์ฐ๊ฒฐ ๋ ! App.js์์ ํด๋น ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ ์ฌ์ฉํ๋ ๋ฒ์ ๋ค์์!