key | value ํํ
--save ๋ช
๋ น์ด : package.json ์ ์ ์ฅ --> dependencies์ ์ ์ฅ
var express = require('express');
var app = express();
app.listen(3000, function(){
console.log("start, express server on port 3000");
}) // 3000 : ํฌํธ๊ฐ
// localHost = 127.0.0.1
// node๋ ๋น๋๊ธฐ
// url routing
app.get('/', function(req, res){
res.send("<h1>hi, friend!</h1>"); // html ํ๋ฉด์ ์ถ๋ ฅ
res.sendFile(__dirname + "/public/main.html")
// htmlํ์ผ ๋ณด๋ด๊ธฐ, __dirname ์ ๋๊ฒฝ๋ก + html ํ์ผ ์์น
})
app.use(express.static('public'))
// 'public' ์ด๋ผ๋ ๋๋ ํ ๋ฆฌ๋ฅผ static์ผ๋ก ์ธ์
app.get('/main', function(req, res){
res.sendFile(__dirname + "/public/main.html")
// htmlํ์ผ ๋ณด๋ด๊ธฐ, __dirname ์ ๋๊ฒฝ๋ก + html ํ์ผ ์์น
})
// get ์์ฒญ
<body>
<form action="/email_post" method="post">
<input type="text" name="email">
<input type="submit">
</form>
</body>
var bodyParser = require('body-parser')
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended:true}))
app.post('/email_post', function(req, res){
res.send("post response");
// data ๋ฐ๊ธฐ
// npm install body-parser --save --> body-parser๋ฅผ ์ด์ฉํด์ data ๋ฐ๊ธฐ
// req.body --> {} ๊ฐ์ฒดํํ
res.send("<h1>welcom </h1>" + req.body)
})
ํ ์ง์ ์์ ๋ค๋ฅธ ์ง์ ์ผ๋ก ์ด๋ํ๋ ์ผ๋ จ์ ๋ฐ์ดํฐ
์คํธ๋ฆผ์ ๋ฐฐ์ด์ด๋ ๋ฌธ์์ด๊ฐ์ ๋ฐ์ดํฐ ์ปฌ๋ ์
/ ์คํธ๋ฆผ์ด ์ด๋ ค์ด ๊ฒ์ ํ๋ฒ์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ป์ ์ ์๋ค๋ ์ ์ด๋ค. ๊ทธ๋์ ์คํธ๋ฆผ์ ์์ฒญ ํฐ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋๋, ์ธ๋ถ ์์ค๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ํ Chunk์ฉ ๊ฐ์ ธ์ฌ ๋ ํ์ ๋ฐํํ๋ค.
Buffer์ ์ ์์ ๋ฐ๋ฅด๋ฉด, ํ์ผ์์คํ ์์ ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ค์ด ์ด๋ํ๋ค๋๊ฑธ ์๋ฏธ
๐ Buffer ?
Node.js์ ์ผ๋ถ๋ก ๋์ ๋์ด TCP ์คํธ๋ฆผ์ด๋ ํ์ผ์์คํ ๊ฐ์ ์์ ์์์ octet Stream(์ผ๋ฐ์ ์ผ๋ก 8bit ํ์์ผ๋ก ๋ ๋ฐ์ดํฐ)๊ณผ์ ์ํธ์์ฉ์ ๊ฐ๋ฅํ๊ธฐ ์ํด ๋ง๋ค์ด์ก๋ค. --> ๋ฐ์ด๋๋ฆฌ ๋ฐ์ดํฐ๋ค์ ์คํธ๋ฆผ์ ์ง์ ๋ค๋ฃจ๊ธฐ ์ํด Node.js API์ ์ถ๊ฐ
> ์ปดํจ๋๊ฐ ์ด์ง์๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ํํํ๋ค ์ด๋ 0 ํน์ 1๋ก ๋์ด์๋ ์๋ฆฌ๋ฅผ ๋นํธ(bit) ๋ผ ํ๋๋ฐ, ์ด๋ฅผ Binary digIT์ ์ฝ์์ด๋ค.
๋ฐ์ดํฐ๋ค์ ์คํธ๋ฆผ์ด๋? ์ผ๋ จ์ ๋ฐ์ดํฐ๋ค์ด ํ์ง์ ์์ ๋ค๋ฅธ ์ง์ ์ผ๋ก ์ด๋ํ๋ ๊ฒ
๋ฐ์ดํฐ๋ค์ ํ ์์ ์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ์๊ฐ์ด ๋ฐ์ดํฐ๊ฐ ๋์ฐฉํ๋ ์๊ฐ๋ณด๋ค ๋ ๋น ๋ฅด๋ค๋ฉด, ๋จผ์ ๋์ฐฉํ ๋ฐ์ดํฐ๋ ์ฒ๋ฆฌ๋๊ธฐ ์ ์ ์ด๋์ ๋์ ๋ฐ์ดํฐ๋์ด ์์ผ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ค. ์ด๋ ๊ทธ ๊ธฐ๋ค๋ฆฌ๋ ์์ญ์
Buffer
๋ผ ํ๋ค. ์ปดํจํฐ์์ ์ผ๋ฐ์ ์ผ๋ก RAM์ด๋ผ๊ณ ๋ถ๋ฆฌ๋ ์์ญ์์ streaming ์ค์ ๋ฐ์ดํฐ๊ฐ ์ผ์์ ์ผ๋ก ๋ชจ์ด๊ณ , ๊ธฐ๋ค๋ฆฌ๋ฉฐ ๊ฒฐ๊ตญ์๋ ๋ฐ์ดํฐ๊ฐ ์ฒ๋ฆฌ๋๊ธฐ ์ํด ๋ด๋ณด๋ด์ด ์ง๋ค.if (req.method === 'POST') { let body = ''; req.on('data', chunk => { body += chunk.toString(); // convert Buffer to string }); req.on('end', () => { console.log(body); res.end('ok'); }); }