Nodejs Server
Nodejs๋ฅผ ๊ณต๋ถํ๋ฉด์ ์ป์ ์ง์์ ์์ฝํด์ ์ ๋ฆฌํด๋ณผ๋ ค๊ณ ํฉ๋๋ค.
์๋ฒ๋ ํด๋ผ์ด์ธํธ๊ฐ ์์ฒญ(request)์ ํ๋ฉด ์๋ต(response)์ ํด์ค๋๋ค. ์ด๊ฒ์ ํ ๋๋ก ์ฝ๋๋ฅผ ์ง๊ฒ ๋ฉ๋๋ค.
๋จผ์ ๊ฐ์ฅ ๋ผ๋๋ฅผ ๋ง๋๋ ์ฝ๋์ ๋๋ค.
const http = require('http');
http.createServer((req, res) => {
//์ด๋ป๊ฒ ์๋ตํ ์ง ์ ๋ ๊ณณ
})
์๋ต์ ํ๋ ์ฝ๋๋ res. ์ผ๋ก ์์ํ๋ฉด ๋ฉ๋๋ค. ์ฐธ๊ณ ๋ก res๋ ๋งค๊ฐ๋ณ์์ด๋ฏ๋ก ๋ฐ๊ฟ๋ ์๊ด ์์ต๋๋ค.
res.writeHead(HTTP์ํ์ฝ๋, ์๋ต์ ๋ํ ์ ๋ณด)
: ํค๋res.write(๋ณด๋ผ ๋ฐ์ดํฐ)
: ๋ณธ๋ฌธ
HTTP์ํ์ฝ๋
- 2XX : ์ฑ๊ณต์ ์๋ฆฌ๋ ์ํ ์ฝ๋, 200(์ฑ๊ณต), 201(์์ฑ๋จ)์ด ๋ง์ด ์์ฉ๋จ.
- 3XX : ๋ฆฌ๋ค์ด๋ ์ (๋ค๋ฅธ ํ์ด์ง ์ด๋)์ ์๋ฆฌ๋ ์ํ์ฝ๋,301(์๊ตฌ์ด๋), 302(์์์ด๋), 304(์์ ๋์ง ์์)์ด ๋ํ์ ์ ๋๋ค.
- 4XX : ์์ฒญ ์ค๋ฅ๋ฅผ ๋ปํฉ๋๋ค. ๋ํ์ ์ผ๋ก 400(์๋ชป๋ ์์ฒญ), 401(๊ถํ์์), 403(๊ธ์ง๋จ), 404(์ฐพ์ ์ ์์)์ด ์์ต๋๋ค.
- 5XX : ์๋ฒ ์ค๋ฅ๋ฅผ ๋ํ๋ ๋๋ค. ์๊ธฐ์น ๋ชปํ ์๋ฌ๋ฐ์ ์ ๋ฐ์, 500(๋ด๋ถ์๋ฒ ์ค๋ฅ), 502(๋ถ๋ ๊ฒ์ดํธ์จ์ด), 503(์๋น์ค๋ฅผ ์ฌ์ฉํ ์ ์์)
๋๋จธ์ง๋ ์ฝ๋๋ฅผ ๋ณด์๋ฉด์ ์ค๋ช ํ๊ฒ ์ต๋๋ค.
const http = require('http');
const server = http.createServer((req, res) => {
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.write('<h1>Hello Node!</h1>');
res.end('<p>Hello Server!</p>');
});
server.listen(8080);
server.on('listening', () => {
console.log('8080๋ฒ ํฌํธ์์ ์๋ฒ ๋๊ธฐ ์ค์
๋๋ค!');
});
server.on('error', (error) => {
console.error(error);
});
ํค๋๋ถ๋ถ์ ์๋ต์ ๋ํ ์ ๋ณด๋ ์ฝํ ์ธ ํ์, ํ๊ธ์ ์ํด ์ธ์ฝ๋ฉ๋ฐฉ์์ ์ ํด์ฃผ์์ต๋๋ค.
์ฐธ๊ณ ) ์ด๋ฏธ ์ฌ์ฉํ๊ณ ์๋ ํฌํธ๋ฒํธ์ด๋ฉด EADDRINUSE ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋ฐ ๊ฒฝ์ฐ ํฌํธ๋ฒํธ๋ฅผ ๋ฐ๊ฟ์ฃผ๊ฑฐ๋ ์ฌ์ฉ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ๊บผ์ฃผ์๋ฉด ๋ฉ๋๋ค.
์ค๋ฅ์ ๋๋น + HTML์ ๋ถ๋ฌ์๋ณด๊ฒ ์ต๋๋ค.
const http = require('http');
const fs = require('fs').promises;
http.createServer(async (req, res) => {
try {
const data = await fs.readFile('./server2.html');
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' });
res.end(data);
} catch (err) {
console.error(err);
res.writeHead(500, { 'Content-Type': 'text/plain; charset=utf-8' });
res.end(err.message);
}
})
.listen(8081, () => {
console.log('8081๋ฒ ํฌํธ์์ ์๋ฒ ๋๊ธฐ ์ค์
๋๋ค!');
});
res.end๋ catch๋ถ๋ถ์๋ ๊ผญ ์จ์ฃผ์ ์ผ๋ฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ ์๋ฒ๋ก๋ถํฐ ์๋ต์ด ์ค๊ธธ ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ timeout(์๊ฐ์ด๊ณผ) ์ฒ๋ฆฌํฉ๋๋ค.
์ค๋ฅ๋ฅผ ์ํด try, catch๋ฅผ ์จ์ฃผ์ ์ ์ค๋ฅ๋ฅผ ์ก์์ฃผ์ ์ผํฉ๋๋ค.
Leave a comment