์ถ์ฒ https://velog.io/@gidong_e/Node.js-Express
1. client(๋ธ๋ผ์ฐ์ ) (html, css, javascript / react, next)
์์ ๋ฐ์ดํฐ๋ฅผ ์๋ฒ์ชฝ์ผ๋ก ์ ์ก((ํน์ ์์ฒญ๋ ํจ๊ป)์๋ฒ์ผ ๋ญ ํด์ค!) ์์ฒญํ ๋ ์ด๋์ ๋ ๋ค์ ๊ท์ REST API ์กฐํ๊ฐ์ ์์ฒญ --> get ์์ฒญ ์ด๋ผ๊ณ ํ์ ์ญ์ ๊ฐ์ ์์ฒญ --> delete ์์ฒญ ์ถ๊ฐ๊ฐ์ ์์ฒญ --> post ์์ฒญ ์์ ์์ฒญ --> put ์์ฒญ ์์ฒญ์ ๋ํ ๋ชจ์์ ์ฃผ์๋ชจ์์ผ๋ก ํ์ ์ฌ์ฉ์ ์ ๋ณด ์กฐํ๋ www.naver.com/user ๋ก get ์์ฒญ ์ฌ์ฉ์ ์ ๋ณด ์์ www.naver.com/user put ์์ฒญ + April์ด๋ผ๋ ์ฌ์ฉ์๋ฅผ ๋์ด 20์ผ๋ก www.naver.com/ get ์์ฒญ
2. ์๋ฒ๋ client์ ๋ฐ์ดํฐ์ ์์ฒญ์ ์ ๋ณด๋ฅผ ๋ฐ๋๋ค
app.get('/user', ํจ์); app.put('/user', ํจ์);
"April" ๋ฐ์ดํฐ ๋ฐ์๊ณ , ์์ฒญ์ April์ ์ ์์ ๋ณด ์กฐํ ์์ฒญ์ด๋ค
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ April์ ์ ์ ์ ๋ณด ์กฐํ(SQL)
(SELECT age, salary, name FROM tbl_users WHERE name = 'April')
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์๋ค
๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ฐ์ ๋ฐ์ดํฐ๋ฅผ client์๊ฒ ๋ค์ ์ ์ก(์๋ต)3. client(๋ธ๋ผ์ฐ์ )
์๋ฒ๋ก๋ถํฐ ๋ฐ์ ์๋ต์ ์ฌ์ฉ์์๊ฒ ํ๋ฉด์ผ๋ก ๋ณด์ฌ์ฃผ๊ธฐ
express.js ์๋ฒ์ชฝ์์ ์ฌ์ฉํ๋ ํ๋ ์์ํฌ
ํ๋ ์์ํฌ : ๊ณตํต์ ์ธ ๊ธฐ๋ฅ์ ๋ฏธ๋ฆฌ ๊ตฌํํด ๋์ ์ผ์ข ์ ๋ฐ์กฐ๋ฆฌ์ํ
์๋ฒ์์ ํด๋ผ์ด์ธํธ์ชฝ์ผ๋ก ๋ฐ์ดํฐ์ ์ก, ์ด๋ฏธ์งํ์ผ, jsํ์ผ, ๋ณด์๊ธฐ๋ฅ, ...
์๋ฒ๋ก ํ์ฉํ๊ณ ์ถ์ ํด๋๋ฅผ ์์ฑํ์ฌ
ํด๋น ํด๋ ์์์ npm init ์ ์คํํ๋ฉด package.json(ํด๋นํด๋์ ๋ํ ์ ๋ณด๊ฐ ๋ค์ด์๋ ํ์ผ)
์ด ์๋์ผ๋ก ๋ง๋ค์ด ์ง๋ค
entry point: (index.js) app.js (server.js ๋ก ๋ง๋๋ ์ฌ๋๋ ์์)
npm install express --save // ์์์ ์ผ๋ก ์ฌ์ฉํ๋ ค๋ฉด --save ๋นผ๋ ๋๋ค
๊ฐ์ ์ปดํจํฐ ์์์ ์คํ๋๊ณ ์๋ ํ๋ก๊ทธ๋จ๋ค์ ๊ตฌ๋ถํ๊ธฐ ์ํ ๋ฒํธ
April์ ์ปดํจํฐ
Kyle์ ์ปดํจํฐ
์ปดํจํฐ๋ฅผ ๊ตฌ๋ถํ๋ ๊ฒ์ ip์ฃผ์ 127.0.0.1
์คํ์ค์ธ ํ๋ก๊ทธ๋จ์ด
LoL 3000
Zoom 3001
kakao talk 8080
... 3360
node app
express๋ก ๋ง๋ ํ๋ก๊ทธ๋จ์ด ์คํ์ค์ธ ์ํ์์
์ฝ๋๋ฅผ ์์ ํ๋ฉด ๋ฐ์๋์ง ์๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ฅผ ๋ค์ ๊ป๋ค ์ผ์ค์ผ ํ๋ค
์ด๋ nodemon์ ์ฌ์ฉํ๋ฉด ์ฝ๋๊ฐ ์์ ๋๋ฉด ์์์ ์๋ฒ๋ฅผ ๊ป๋ค ์ผ์ค๋ค
npm install nodemon --save
์ ์ญ์ค์น(์ด๋ค ํ๋ก์ ํธ ๋ง๋ค๋ ํฐ๋ฏธ๋์์ ๋ช ๋ น์ด ์ฌ์ฉํ ์์๋๋ก)
npm install --global nodemon
nodemon ํ์ผ์ด๋ฆ
npm install --save mysql2
mysql์ ์ค์น๋๋ฉด
๋ฐ๋ก ์คํํ์ง ์์๋
ํ๋ก๊ทธ๋จ์ด ์คํ๋จ (์ปดํจํฐ์ผ์ง๋ฉด)
react 3001 ์คํ์ค
express๊ฐ 3000๋ฒ ์คํ์ค
mysql์ 3306๋ฒ ์คํ์ค
๋ฆฌ์กํธ๊ฐ ์์ฒญ(ํด๋ผ์ด์ธํธ)
/user get ์์ฒญ! 'April'
(3000๋ฒ์์ ์คํ์ค์ธ express ํํ
)
express๋
'April'์ด๋ผ๋ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์
app.get('/user', ํจ์1);
์ ๋ช
์๋ ํจ์1์ ์คํํจ!
ํจ์1 ๋ด๋ถ์ ์ผ๋ก
1. 3306๋ฒ์ ์คํ์ค์ธ mysql์ ์
2. 'April' ๋ฐ์ดํฐ SELECT
3. ๊ฒฐ๊ณผ๋ก ๋ฐ์์จ ๋ฐ์ดํฐ res.json ์๋ต
(๋ค์ ๋ฆฌ์กํธ์๊ฒ ์๋ต)
๋ฆฌ์กํธ๋ ์๋ต์ ๋ฐ์์ ๋ฐ์์จ ๋ฐ์ดํฐ๋ฅผ
์ด์๊ฒ h1ํ๊ทธ ์์์ ๋ณด์ฌ์ค
// ์๋ ๋ฌธ๋ฒ commonjs ๋ชจ๋
// ์์ฆ ๋ฌธ๋ฒ es ๋ชจ๋(express๊ฐ ์์ง es๋ชจ๋๋ก ์์ฑํ์๋๋ ์ฌ๋ฐ๋ฅด๊ฒ ๋์ํ์ง ์๋ ๊ฒฝ์ฐ๊ฐ ์์)
// import styled from "@emotion/styled"
// import express from "express";
const express = require('express');
const mysql = require('mysql2');
const app = express();
const port = 3000;
// ์์์๋ req๋ ์์ฒญ์๋ํ ์ ๋ณด๊ฐ ๊ฐ์ฒด๋ก ๋ค์ด์๋ค
// ๋ค์์๋ res๋ ์๋ต์๋ํ ์ ๋ณด๊ฐ ๊ฐ์ฒด๋ก ๋ค์ด์๋ค
app.get('/', (req, res)=>{
// ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ์กฐํํด์ค
// ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด์ผํ๋ค? ์ด๋ ์ฌ์ฉํ๋ ๊ฒ์ด
res.send('hello world')
});
// /a ๋ก get ์์ฒญ์ ์๋ต์ผ๋ก age is 10 ์ถ๋ ฅํด์ค
app.get('/a', (req, res)=>{
let html = `
<h1>๋ฉ์ธํ์ด์ง ์
๋๋ค</h1>
<p>์๋
ํ์ธ์</p>
`;
res.send(html); // ๋ฐ์ดํฐ ๋ณด๋ด๊ธฐ ๋ฐฉ๋ฒ1
});
// JavaScript Object Notation(์๋ฐ ์คํฌ๋ฆฝํธ ๊ฐ์ฒด ํ๊ธฐ๋ฒ)
app.get('/b', (req, res)=>{
res.json({age:10, name:'Jay'}); // ๋ฐ์ดํฐ ๋ณด๋ด๊ธฐ ๋ฐฉ๋ฒ2
})
// ์ด๋ฏธ ์คํ ์ค์ธ ํฌํธ์๊ธฐ๋๋ฌธ์ ์คํ X
// Ctrl + c ๋๋ฌ์ ์๋ฒ ๋๊ณ
// node app ๋ค์ ์ผ์ผํ๋ค
app.get('/c', (req, res)=>{
console.log('์ญ์ ์๋ฃ!'); // DELETE FROM USERS WHERE name='April';
res.end(); // ๋ฐ์ดํฐ ๋ณด๋ด๊ธฐ ๋ฐฉ๋ฒ3(๋ณด๋ผ๊ฒ ์์๋)
});
// creating connection pool
const pool = mysql.createPool({
host:'localhost', // '127.0.0.1' ๋ก ์จ๋ ๋๋ค
database:'board',
user:'boarduser',
password:'0000', // ์์๋ด์ค~ใ
ใ
ใ
port:3306
});
// mysql์ ์ํด์ ์ฌ์ฉ์์ด๋ฆ์ด April์ธ ์ฌ๋์ ๋ฐ์ดํฐ ์กฐํ
app.get('/d', (req, res)=>{
pool.query('select * from tbl_a' , (err, results, fields)=>{
console.log(err);
console.log('res์๋', results);
console.log('fields์๋',fields);
res.json(results);
});
});
app.listen(port, ()=>{console.log(`app listening on ${port}`)});
// listen ํจ์
// 1. ์ธ์
// ๋๊ฐ ์์๋ ์ซ์ํ์
, ๋ค์๋ ํจ์
// 2. ๋์
// ํด๋น ํ๋ก๊ทธ๋จ์ด ์์ชฝ์ ์ ๋ฌ๋ฐ์ ์ซ์ ๋ฒ ํฌํธ์์ ๋์ํ๊ฒ ๋ง๋๋ ํจ์
// ๋ค์ชฝ์ ์ธ์๋ก ์ ๋ฌํ ์ฝ๋ฐฑํจ์๋ ํ๋ก๊ทธ๋จ์ด ์คํ๋์์ ๋ ์ต์ด ํ๋ฒ ์คํ๋๋ ํจ์์ด๋ค
// 3. ๊ฒฐ๊ณผ๊ฐ
// ์๊ฐX (์คํ์ค์ธ ์๋ฒํ์
)