D+72
- ๋ด๊ฐ ์ดํดํ Node.js -
( Node.js)
๐ ๊ณต์๋ฌธ์๋ฅผ ๋ณด๊ณ ์ดํดํ ๋ฐฉ์๋๋ก ์์ฑํ ๊ธ๋ก ์ ํํ์ง ์์ ์ ์์ต๋๋ค ๐
๊ณต์๋ฌธ์๋ฅผ ์ฝ๊ณ ์๊ฒ๋ Node.js ๊ฐ๋
1. Node.js๋ฅผ ํตํด์ ์๋ฒ๋ฅผ ์์ฑํ ๊ฒฝ์ฐ, ์๋ฒ๋ฅผ ์์ฑํ๊ธฐ ์ http๋ชจ๋, ํฌํธ๋ฒํธ, ip๋ฅผ ์์์ผ ํ๋ค.
const http = require('http'); // require์ ํตํด http ๋ชจ๋์ ๋ถ๋ฌ์จ๋ค
const port = 5000; // ํฌํธ๋ฒํธ 5000๋ฒ
const ip = 'localhost'; // ip๋ localhost๋ก ์ค์
// ex ) http://localhost:5000
2. http๋ชจ๋๊ณผ createServer๋ฅผ ์ด์ฉํด ์๋ฒ๋ฅผ ์์ฑํ๋ค.
const server = http.createServer((request, response) => {
}) // createServer๋ฅผ ํตํด ์๋ฒ๋ฅผ ์์ฑํ๋๋ฐ ์ด๋ ์์ฒญ๊ณผ ์๋ต์ผ๋ก ๊ฐ์ ์์ฒญํ๋ค.
3. listen ๋ฉ์๋๋ ์์ฒญ์ ์ค์ ๋ก ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ๋ค.
server.listen(PORT, ip, () => {
});
4. request์ method์ url์ด ๋ค์ด์์ด ์กฐ๊ฑด๋ฌธ์ ์ฌ์ฉํ ๋ ์ฉ์ดํ๋ค.
if(request.method === 'OPTIONS') // ๋ง์ฝ ์์ฒญ์ ๋ฉ์๋๊ฐ OPTIONS์ผ ๊ฒฝ์ฐ
if(request.method === 'POST' && request.url === '/upper')
// ๋ง์ฝ ์์ฒญ์ ๋ฉ์๋๊ฐ POST์ด๊ณ url์ด /upper์ผ ๊ฒฝ์ฐ
5. ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ค๋ฅ ๋ฉ์์ง๋ฅผ ๋ํ๋ด์ผ ํ๋ค.
6. HTTP ์ํ์ฝ๋๋ฅผ ๋ฐ๋ก ์ค์ ํด ์ฃผ์ง ์์์ ๊ฒฝ์ฐ ์ํ์ฝ๋๋ 200์ด๋ค.
7. ์ํ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ๊ณ ์ ํ ๋
response.statusCode = 200;
8. ์ํ์ฝ๋๋ ์ค์ ํด์ฃผ๊ณ ๋ช ์์ ์ผ๋ก ํค๋๋ฅผ ์์ฑํ๊ณ ์ ํ ๋ writeHead๋ฅผ ์ฌ์ฉํ๋ค.
(CORS๋ฅผ ์ ์ฉํ ๋ ์ฃผ๋ก ์ฌ์ฉ๋๋ ๊ฒ ๊ฐ๋ค)
9. request์์ ์ด๋ฒคํธ๋ฅผ ์ค์ ํด์ฃผ๊ณ ์ ํ ๋๋ on๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
if(request.method === 'POST' && request.url === '/upper') {
let str;
request.on('data', chunck => { // on์ ํตํด 'data'๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ค.
str = chunk.toString().toUpperCase();
}).on('end', () => { // ๋๋ด๊ธฐ ์ 'end' ์ฌ์ฉ
response.wrtieHead(200, {ํด๋๊ฐ});
response.end(str)
})
}
10. response(์๋ต)์๋ ํญ์ ๋์ด ์์ด์ผ ํ๋ค.
// end ์ฌ์ด์ ๋ด๋ณด๋ด๊ณ ์ถ์ ๊ฐ์ ์ ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ณด๋ด๊ฑฐ๋,
// end ์ฌ์ด์ ๊ฐ์ ์ ์ง ์๊ณ ๊ทธ๋ฅ ๋๋ผ ์๋ ์๋ค.
response.end();
'์๋ > Code-States' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[D+74] React์ ๋ํ ๋์ ์๊ฐ (0) | 2020.12.31 |
---|---|
[D+73] ํธ๋ฆฌํ Express (feat. ๋ฏธ๋ค์จ์ด) (0) | 2020.12.30 |
[D+71] Server & Node (0) | 2020.12.28 |
[D+70] Immersive 4์ฃผ์ฐจ (0) | 2020.12.27 |
[D+69] ๋น๋๊ธฐ ๋ฐ๋ณต ํ์ต (feat. ์ฒ์์ผ๋ก ๋๋์๊ฐ๊ธฐ) (0) | 2020.12.26 |
๋๊ธ