๋ฐ์ํ
๐ ์ค๋ ํ ์ผ
โ๏ธ node.js๋ก ์น์๋ฒ ๋ง๋ค๊ธฐ
node.js์์ http ๋ชจ๋์ ์ด์ฉํด ์น์๋ฒ๋ฅผ ๋ง๋ค์๋ค. HTTP ํธ๋์ญ์ ํด๋ถ๋ผ๋ ๊ฐ์ด๋๊ฐ ์์ด์ ์ฒ์๋ถํฐ ์ ๋ ํด๋ณด๊ณ ์ฝ๋๋ฅผ ํ๋์ฉ ๋ฐ๋ผ์ณ๋ณด๊ธฐ๋ ํ๋ค. ์ผ๋จ ๋ฌด์์ ๋ฐ๋ผํด๋ณด๊ณ ์ด๋ค ๋ณํ๊ฐ ์๋์ง ์ดํด๋ณด๋ค ๋ณด๋๊น ๊ธ๋ก ๋ณผ ๋๋ณด๋ค ์ด๋ค์์ผ๋ก ๋์๊ฐ๋๊ฑด์ง, request๊ฐ์ฒด์ response ๊ฐ์ฒด๊ฐ ์ด๋ค์์ผ๋ก ์๋ํ๋์ง ๋ ๋ฐ๋ก ์ ์ ์์๋ค. ์น์๋ฒ๋ฅผ ๋ง๋ค๊ณ , ํด๋ผ์ด์ธํธ ๋ถ๋ถ์์ ๋ณด๋ธ POST ์์ฒญ์ ๋ฐ์ผ๋ฉด body๋ถ๋ถ์ ์ ์ ํ ๋ณํํด ๋ค์ body์ ๋ด์ ์๋ต์ ๋๋ ค์ฃผ๋๊ฒ ์ ์ฒด์ ์ธ ๊ตฌ์กฐ์๋๋ฐ OPTIONS๋ฉ์๋์ ๋ฐ๋ฅธ(preflight request) ์๋ต๋ถ๋ถ๋ ๋ฐ๋ก ์์ฑํด๋ณด๋๊น ๊ฐ๋ ์ผ๋ก๋ง ๋ด์ ๋ญ๊ฐ ์ถ์์ ์ผ๋ก ๋๊ปด์ก๋ CORS๋ฅผ ๊ตฌ์ฒด์ ์ด๊ณ ๋ช ํํ๊ฒ ์ ์ ์์๋ค.
โ๏ธ Toy - power
๋ ์(๋ฐ, ์ง์)๋ฅผ ์ ๋ ฅ๋ฐ๊ณ ๊ฑฐ๋ญ์ ๊ณฑ์ ๋ฆฌํดํ๋ ๋ฌธ์ ๋ฅผ ํ์๋ค. ์กฐ๊ฑด์ด ์ฌ๋ฌ๊ฐ ๋ถ์ด์์๋๋ฐ 1) Math.pow, **์ฐ์ฐ์ ์ฌ์ฉ ๊ธ์ง, 2)์๊ฐ๋ณต์ก๋ O(logN) 3) ๊ณ์ฐ ๊ฒฐ๊ณผ๊ฐ ์ปดํจํฐ๋ก ํ์๊ฐ๋ฅํ ๋ฒ์๋ฅผ ๋์ง ์์ ๊ฒ ์ด๋ ๊ฒ ์ธ๊ฐ์ง์๋๋ฐ ๋๋ฒ๊น ํด๋ณด๋ ์ค๊ฐ์ ํ๋ฒ ํ์ ๊ฐ๋ฅ๋ฒ์๋ฅผ ๋์ด๊ฐ์์ธ์ง ๋ง์ง๋ง ํ ์คํธ ์ผ์ด์คํ๋๊ฐ ํต๊ณผ๋์ง ์์๋ค.. ๋ฐ๋ณต๋ฌธ์ผ๋ก ํต๊ณผํด๋ณด๊ณ ์ถ์๋๋ฐ ๋ด์ผ ์ข ๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋ด์ผ๊ฒ ๋ค.
๐ ๊ธฐ์ตํ ๊ฒ
โ๏ธ http ๋ชจ๋
createServer : ์น ์๋ฒ ๊ฐ์ฒด ์์ฑ (์์ฒญ์ด ์ฌ๋๋ง๋ค ์ฝ๋ฐฑํจ์๊ฐ ํธ์ถ๋จ)
listen() : ์ค์ ์์ฒญ ์ฒ๋ฆฌํ๋ ๋ฉ์๋
on() : ์ด๋ฒคํธ ๋ฑ๋ก
data, end : ์ด๋ฒคํธ (์ด๋ฒคํธ๋ฆฌ์ค๋ ๋ฑ๋ก์ผ๋ก ๋ฐ์ดํฐ ๋ฐ๊ธฐ ๊ฐ๋ฅ)
writeHead() : ํค๋์์ฑ (setHeader + statusCode)
end() : response body ์ ์ก
// ์ด์ ๋ฆฌ
const http = require('http');
http.createServer((request, response) => {
let body = [];
request.on('error', (err) => {
console.error(err);
}).on('data', (chunk) => {
body.push(chunk);
}).on('end', () => {
body = Buffer.concat(body).toString();
// ์ํ๋ ์๋ต์ฒ๋ฆฌ
response.on('error', (err) => {
console.error(err);
});
response.writeHead(200, {'Content-Type': 'application/json'})
});
}).listen(PORT);
๐ ๋ ๊ณต๋ถํ ๊ฒ
โ๏ธ OPTIOINS ์์ฒญ
OPTIONS ์์ฒญ์์๋ ๋ค๋ฅธ ์ฒ๋ฆฌ๋ฅผ ํ์ง ์๊ณ ํ์ฌ ์๋ฒ์์ ์ ๊ณต ๊ฐ๋ฅํ ์ต์ ์ ๋ณด๋ง ๋ด๋ ค์ฃผ๋ฉด์ ๋ฌด์กฐ๊ฑด 2XX ์ํ๋ก ์ ๋ฌํด์ผ ํ๋ค. ๋ผ๊ณ ํ๋๋ฐ mdn ๋ฌธ์์๋ ์ฑ๊ณตํ response๋ body๋ฅผ ๊ฐ์ง๋ค๊ณ ์ ํ์์ด์, ์ด๋ค ๊ฒฝ์ฐ์ body์ ์ฝํ ์ธ ๊ฐ ๋ด๊ธฐ๋ ๊ฑด์ง ์ข ๋ ์์๋ด์ผ๊ฒ ๋ค.
โ๏ธ serve ์ ํธ๋ฆฌํฐ
๋ฐ์ํ
'Daily > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
210207_TIL (0) | 2021.02.08 |
---|---|
210206_TIL (2) | 2021.02.07 |
210204_TIL (0) | 2021.02.05 |
210203_TIL (0) | 2021.02.04 |
210202_TIL (0) | 2021.02.03 |
๋๊ธ