์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ์ฝ๋ฉ์ ํ
- ํ๋ก๊ทธ๋๋จธ์ค
- CSS
- ํ ์ดํ๋ก์ ํธ
- fe
- ๊ฐ๋ฐ
- error
- node.js
- Til
- javascript
- ํ๋ก ํธ์๋
- ๋๋ฆผ์ฝ๋ฉ
- KDT
- ๋ชจ๊ฐ์ฝ
- Python
- mongodb
- ๊ทธ๋ฆฌ๋
- ๊ตญ๋น์ง์
- ๋ ธ๋ง๋์ฝ๋
- ํฌ๋กค๋ง
- react
- ํ์ด์ฌ
- ์๊ณ ๋ฆฌ์ฆ
- ํ๋ก์ ํธ
- heapq
- JS
- HTML
- ์ฝ๋ฉํ ์คํธ
- ์ฝ๋ฉ
- ๋ฐฑ์ค
- Today
- Total
๋ชฉ๋กServer (50)
๐ฑ → ๐ณ
front์ form์ผ๋ก back์๊ฒ ๋ฐ์ดํฐ ๋ณด๋ด๊ธฐ form XMLHttpRequest Jquery Fetch() ๐ users.ejs์ form ์ถ๊ฐ ๐form action : ๋ณด๋ด๊ณ ์ ํ๋ ์ฃผ์ ๊ฐ method: ๋ณด๋ด๋ method ์ค์ (get, post ๋ง ๊ฐ๋ฅ) input์ name ์์ฑ์ ์๋ฒ์์ ๋ฐ์ ๋ ํ๋ ๊ฐ์ด ๋จ ๋ฒํผ type์ผ๋ก submit์ ํ๋ฉด ํด๋น ํผ์ ๋ด์ฉ์ ์ง์ ํ ๋ฐฉ์ + ์ฃผ์๋ก ์ ๋ฌ ์์ด๋ ์ด๋ฆ ์ด๋ฉ์ผ Submit โ body-parser ๋ชจ๋ ์ฌ์ฉ : form์์ ์ ์ก ๋, ์ ๋ณด๋ฅผ req.body์ ๋ด์์ obj๋ก ์ ๋ฌํด์ฃผ๋ ์ญํ body-parser๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์๋์ ๊ฐ์ ์ฝ๋๋ก ๋ฐ์ดํฐ๋ฅผ body์ ๋ฃ์ ๋ค์, ์ธ์ฝ๋ฉ์ฒ๋ฆฌ๊น์ง ํด์ค์ผํจ (body-parser๋ ์๋์ผ..
์๋ฒ err๊ฐ ๋ฐ์ํ๋ฉด err๋ฅผ ๋ฐ์์ํจ ๋ค์ err ๋ฉ์์ง์ status ์ฝ๋๋ฅผ ์ ๋ฌํด ์ค์ผํจ ๐error ๋์ง๊ธฐ router.get('/:id', (req, res) => { const userData = USER.find((user) => user.id === req.params.id); if (userData) { res.send(userData); } else { const err = new Error('ID not found'); err.statusCode = 404; throw err; } }); ์ด๋ฐ ๋ฐฉ์์ผ๋ก err๊ฐ ๋ฐ์ํ ์ง์ ์์ new Error๋ฅผ ํตํด err ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ throw๋ก ์ ๋ฌ ์ด๋ฐ ์์ผ๋ก err๊ฐ ๋ฐ์ํ๋๋ฐ ์ด๋ฐ ํ์ด์ง๋ ๊ฐ๊ธ์ ํผํ๋ ํธ์ด ์ข์ผ๋ฏ๋ก app.js์์ ..
๐ view engine โ EJS ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ view engine HTML ๋ฌธ๋ฒ ์ฌ์ฉ ๋ ์ด์์ ๊ธฐ๋ฅ X โ pug HTML ๋ฌธ๋ฒ์ ๋จ์ํํ์ฌ ์ฌ์ฉ ๋ ์ด์์ ๊ธฐ๋ฅ O โ nunjucks HTML ๋ฌธ๋ฒ์ ๊ทธ๋๋ก ์ฌ์ฉ ๋ ์ด์์ ๊ธฐ๋ฅ O โ๏ธ EJS ์ฌ์ฉํ๊ธฐ npm i -d ejs express์ ์ด๋ค view engine ์ฌ์ฉํ ์ง ์๋ฆฌ๊ธฐ (์๋ฒ์ฝ๋) app.set('view engine', 'ejs'); ํด๋ ๊ฐ์ฅ ์ธ๋ถ์ views ํด๋ ๋ง๋ค๊ณ ๋ด๋ถ์ index.ejx ํ์ผ ๋ง๋ค๊ธฐ localhost:port๋ฒํธ/users ๊ธฐ๋ณธ ์์ฒญ์ด ๋ค์ด์ค๋ฉด index.js ํ์ผ ๋์ฐ๊ธฐ userRouter.get('/', (req, res) => { res.render('index'); }); ๐ ejs ๋์ ์น ์..
๐ file-system : node์ ๋ชจ๋์ด๋ผ commonJS ๋ฐฉ์์ผ๋ก ๋ถ๋ฌ ์ฌ ์ ์์ const fs = require('fs'); โ readFile : ํ์ผ์ ์ฝ์ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋ ํ์ผ์ ์ฝ๋ ๊ฒ๋ ์๊ฐ์ด ํ์ํ ์์ ์ด๋ฏ๋ก -> callback ์ฌ์ฉ fs.readFile('ํ์ผ์์น','์ ๋์ฝ๋ํฌ๋งท',callback(err, data) {}) err : ํ์ผ ์ฝ๊ธฐ๊ฐ ์ ์๋์์ ๋, error ์ฝ๋ ๋ฐํ data: ํ์ผ ์ฝ๊ธฐ๊ฐ ์ ๋์์ ๋, ์ฝ์ data ๋ฐํ const fs = require('fs'); fs.readFile('readme.txt', 'utf-8', (err, data) => { if (err) { console.log(err); } else { console.log(dat..
๐ DOTENV : ์ค์ํ ์ ๋ณด(์๋ฒ ์ ์ ์ ๋ณด ๋ฑ)์ ์ธ๋ถ ์ฝ๋์์ ํ์ธ์ด ๋ถ๊ฐ๋ฅ ํ๋๋ก ๋์์ฃผ๋ ๋ชจ๋ ๐ ์ค์น npm i dotenv -s ๐ app.js์ ๋ชจ๋ ํธ์ถํ๊ธฐ require('dotenv').config(); ๐ .envํ์ผ์ ์ต์๋จ ํด๋์ ๋ง๋ค๊ธฐ ์ค์ํ ์ ๋ณด๋ฅผ .env ํ์ผ์ ์ ์ฅ (PORT, mongoDB URI ๋ฑ ) ํด๋น ์ ๋ณด๊ฐ ํ์ํ ๊ณณ์์ process.env.์ ์ฅ๋ช ์ผ๋ก ์ฌ์ฉ const uri = process.env.DB_URI; ๐ .env ํ์ผ์ ์ค์ํ ์ ๋ณด์ด๊ธฐ ๋๋ฌธ์ git์ ๋ฑ๋กํ์ง ์์ ! (gitignore์ ๋ฑ๋ก) ๋ฐ๋ผ์, ํด๋น ํ์ผ์ ์ง์ ์ ๋ก๋ ํ๋ฉด์ ์ฌ์ฉ โ ์ฐธ๊ณ , .gitignore์ด ์๋ ๋ ! git๋ ์บ์ฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ก์ปฌ์ ํด๋น ๋ด์ฉ์ด ๋จ์ ์..
๐ Static : ๋ธ๋ผ์ฐ์ ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ ํด๋์ ์์น๋ฅผ ์ง์ ํด ์ฃผ๋ ์ญํ app.use(express.static('views')); ์์ ๋ฏธ๋ค์จ์ด๋ฅผ ์ฌ์ฉํ๋ฉด ํ๋ก์ ํธ์์ ์ฌ์ฉํ๋ ํด๋ ๊ฒฝ๋ก์ ์์์ -> localhost:4000/views ./ ์ ์๋ ๊ฒฝ๋ก -> localhost:4000/views/ ์ ๋์ผํ ์๋ฏธ๋ฅผ ๊ฐ์ง ๋ธ๋ผ์ฐ์ ์์ ์ ๊ทผ ๊ฐ๋ฅํ ๊ธฐ๋ณธ ํด๋๋ฅผ ์ค์ ํ๋ ๋งํผ ๋๋ฌด ๋ง์ ํด๋๋ฅผ ์ ํ๋ ๊ฒ์ ํผํ๋ ํธ์ด ์ข์ ๋ณดํต public ์ด๋ผ๋ ํด๋๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ค์ ํด ๋๊ณ ํด๋น ํด๋๋ง ์ค์ public ํด๋์ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ๋ฑ์ ํด๋ผ์ด์ธํธ๊ฐ ์ ๊ทผ์ด ๊ฐ๋ฅํ ํด๋๋ก์จ ๋ณดํต CSS, ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉํ๋ JS, ์ด๋ฏธ์ง ๋ฑ์ ์์น ๐ Express ๊ธฐ๋ณธ ํด๋ ๊ตฌ์กฐ /images = /img /jav..
๐ URL ๋ฐ์ดํฐ๋ฅผ ๋ฐ๋ ๋ฐฉ๋ฒ โ req.params ๋ฐ์ url์์ :ํ๋ผ๋ฏธํฐ๋ช ์ ๋ฏธ๋ฆฌ ์ ์ํด ๋๋ฉด ํด๋น ๋ด์ฉ์ req.params ์ ๋ด๊ฒจ์ ์ ๋ฌ๋จ app.get('/:id', (req, res) => { console.log(req.params); res.send(`ID ๋ฒํธ๊ฐ ${req.params.id} ์ธ ํ์ ์ ๋ณด`); }); data ์ฌ๋ฌ ๊ฐ ๋ฐ๊ธฐ๋ ๊ฐ๋ฅ req.params ๋ผ๋ ๊ฐ์ฒด์ ๋ด๊ฒจ์ ์ ๋ฌ์ด ๋์ด์ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉ์ด ๊ฐ๋ฅ app.get('/:id/:name/:gender', (req, res) => { console.log(req.params); res.send(req.params); }); โ req.query params ์ ์ฝ์ ์ ์ ์ ๋ ํํ๋ก๋ง ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ์ ์์ ๋ง ..
๐ middleware๋? (์ฌ์ ์ ์๋ฏธ) ์๋ก ๋ค๋ฅธ ์ดํ๋ฆฌ์ผ์ด์ (ํ๋ก๊ทธ๋จ)์ด ์๋ก ํต์ ์ ํ๋๋ฐ ์ฌ์ฉ๋๋ ์ํํธ์จ์ด ์ฆ, ์์ชฝ ์ดํ๋ฆฌ์ผ์ด์ ๊ฐ์ด๋ฐ์์ ์ญํ ์ ํ๋ ์ํํธ์จ์ด Express: ๋ฒก์๋ ์๋น์ค ๊ตฌ์ฑ์ ์ํ ๋ค์ํ ์ํฉ์ ๋ง๋ ์ฌ๋ฌ๊ฐ์ง ์๋น์ค๋ฅผ ๋ฏธ๋ค์จ์ด ํํ๋ก ์ ๊ณต Express ์์์ ๋ฏธ๋ค์จ์ด๋ ์๋ฒ์ ๋ค์ด์จ ์์ฒญ์ด ๋ค์ด์์ ์๋ต์ผ๋ก ๋๊ฐ ๋ ๊น์ง ๊ฑฐ์น๋ ๋ชจ๋ ํจ์ ๋๋ ๊ธฐ๋ฅ์ ์๋ฏธ ์์ฒญ -> ๋ฏธ๋ค์จ์ด -> ์๋ต โ middleware ์ฌ์ฉํ๊ธฐ Express ์์๋ app.use ๋๋ app.method ํจ์๋ฅผ ์ด์ฉํด์ ๋ฏธ๋ค์จ์ด ์ฌ์ฉ ๊ธฐ์กด์ ํจ์๋ฅผ ์ ์ธํ์ฌ ์ฌ์ฉํ๋ ๊ฒ ์ฒ๋ผ, ์์ ๋ฉ์๋๋ฅผ ์ด์ฉํด์ req, res ์ ๋ํ ์ฒ๋ฆฌ app.use(‘์์ฒญ ์ฃผ์‘, (req, res, next) =>..