- http - 서버를 시작하거나 구글 맵 API 처럼 API 요청을 보낼 수 도 있다.
- https - SSL 서버 시작
- fs - 파일 시스템
- path - 파일 경로 가져오기
- os - OS 정보 가져오기
cf)
const http = require('http'); // Global 모듈 가져오기
const http = require('./http'); // 로컬 폴더에서 가져오기 노드는 이벤트 기반으로 작동한다. 따라서 요청이 들어오면 서버가 응답하는 함수를 작성 할 수 있다.
- 요청을 보내면 서버에서 응답을 준다.
const http = require('http');
const server = http.createServer((req, res)=>{ // 요청이 오면 실행하는 이벤트 리스너
console.log(req.url, req.method, req.headers);
res.setHeader('Content-Type', 'text/html')
res.write('<html>')
res.write('<head><title>My Firlst Page</title></head>')
res.write('<body><h1>Hi</h1></body>')
res.write('</html>')
res.end();
});
server.listen(3000);- 클라이언트가 보낸 url 요청을 받고 응답을 보낸다.
const http = require('http');
const server = http.createServer((req, res)=>{ // 요청이 오면 실행하는 이벤트 리스너
const url = req.url; // 사용자가 요청한 url
if (url === '/') {
res.write('<html>')
res.write('<head><title>Enter Message</title></head>')
res.write('<body><form action="/message" method="POST"><input type="text" name="message"><button type="submint">Send</botton></h1></form>')
res.write('</html>')
return res.end(); // 함수 종료
}
res.setHeader('Content-Type', 'text/html')
res.write('<html>')
res.write('<head><title>My Firlst Page</title></head>')
res.write('<body><h1>Hi</h1></body>')
res.write('</html>')
res.end();
});
server.listen(3000);const http = require('http');
const fs = require('fs');
const server = http.createServer((req, res) => {
// 요청이 오면 실행하는 이벤트 리스너
const url = req.url; // 사용자가 요청한 url
const method = req.method;
if (url === '/') {
res.write('<html>');
res.write('<head><title>Enter Message</title></head>');
res.write(
'<body><form action="/message" method="POST"><input type="text" name="message"><button type="submint">Send</botton></h1></form>'
);
res.write('</html>');
return res.end(); // 함수 종료
}
if (url === '/message' && method === 'POST') { // redirection code
fs.writeFileSync('message.txt', 'DUMMY');
res.statusCode = 302;
res.setHeader('Location', '/');
return res.end();
}
res.setHeader('Content-Type', 'text/html');
res.write('<html>');
res.write('<head><title>My Firlst Page</title></head>');
res.write('<body><h1>Hi</h1></body>');
res.write('</html>');
res.end();
});
server.listen(3000);노드는 request를 받을 때 그 안에는 몇개의 청크로 이루어져있다. Node.js 가 작업할 때는 모든 청크가 오기를 기다리지 않는다. 우선 데이터가 오면 버퍼에 넣고 사용한다.
if (url === '/message' && method === 'POST') {
const body = [];
req.on('data', chunk => { // req.on은 버퍼에서 데이터 조각이 전송 될 때마다 실행
console.log(chunk);
body.push(chunk);
});
req.on('end', () => {
const parsedBody = Buffer.concat(body).toString();
const message = parsedBody.split('=')[1];
fs.writeFileSync('message.txt', message);
});
fs.writeFileSync('message.txt', 'DUMMY');
res.statusCode = 302;
res.setHeader('Location', '/');
return res.end();
}
res.setHeader('Content-Type', 'text/html');
res.write('<html>');
res.write('<head><title>My Firlst Page</title></head>');
res.write('<body><h1>Hi</h1></body>');
res.write('</html>');
res.end();
});