간단한 HTTP 서버를 만드는 기본적인 Node.js
2024. 11. 17. 15:50ㆍ정보처리,전산/NODEJS
반응형
// http 모듈을 불러옴. 이를 통해 HTTP 서버를 생성
const http = require('http');
// 서버가 요청을 수신할 포트 번호 지정
const port = 4000;
// HTTP 서버 생성
// 클라이언트 요청(req)과 응답(res)을 처리하는 콜백 함수 전달
const server = http.createServer((req, res) => {
// 요청 URL이 '/home'인 경우 JSON 데이터를 반환
if (req.url === '/home') {
// 응답 헤더 설정: HTTP 상태 코드 200(성공)과 JSON 형식 지정
res.writeHead(200, { 'Content-Type': 'application/json' });
// JSON 데이터를 문자열로 변환하여 클라이언트에 전송
res.end(JSON.stringify({ a: "a", b: "b" }));
// 요청 URL이 '/about'인 경우 HTML 데이터를 반환
} else if (req.url === '/about') {
// 응답 헤더에 콘텐츠 타입을 HTML로 설정
res.setHeader('Content-Type', 'text/html');
// HTML 문서를 작성하고 응답에 추가
res.write('<html>'); // HTML 시작 태그
res.write('<body>'); // Body 시작 태그
res.write('<h1>About page</h1>'); // H1 제목 추가
res.write('</body>'); // Body 종료 태그
res.write('</html>'); // HTML 종료 태그
res.end(); // 응답 종료
// 위 조건에 해당하지 않는 요청 경로는 404 Not Found로 처리
} else {
// HTTP 상태 코드를 404로 설정
res.statusCode = 404;
// 클라이언트에 간단한 메시지와 함께 응답 종료
res.end('Page not found');
}
});
// 서버를 시작하여 지정한 포트에서 요청을 수신
server.listen(port, () => {
// 서버가 시작되면 콘솔에 포트 정보를 출력
console.log(`Listening on port ${port}`);
});
코드 해석
- http 모듈 불러오기:
- Node.js 내장 모듈인 http를 불러온다.
- 이 모듈은 HTTP 서버를 생성하고 클라이언트 요청을 처리할 수 있도록 지원한다.
- 포트 번호 설정:
- 서버가 요청을 수신할 포트 번호를 설정한다.
- 일반적으로 로컬 개발 시 3000, 4000, 5000 같은 포트를 많이 사용한다.
- 서버 생성:
- http.createServer 메서드로 서버를 생성한다.
- 클라이언트 요청(req)에 대한 응답(res)을 처리하는 콜백 함수를 제공한다.
- 요청 처리 분기:
- req.url을 확인해 요청된 URL 경로에 따라 적절히 분기한다:
- /home: JSON 형식의 데이터를 반환한다.
- /about: 간단한 HTML 페이지를 반환한다.
- 기타 경로: HTTP 상태 코드 404를 반환한다.
- req.url을 확인해 요청된 URL 경로에 따라 적절히 분기한다:
- JSON 응답 (/home):
- Content-Type을 application/json으로 설정해 JSON 데이터임을 명시한다.
- JSON.stringify로 JavaScript 객체를 JSON 문자열로 변환해 반환한다.
- HTML 응답 (/about):
- Content-Type을 text/html로 설정해 HTML 응답임을 명시한다.
- 간단한 HTML 문서를 작성하고 응답으로 보낸다.
- 404 처리:
- 요청 경로가 처리 가능한 경로가 아니면 HTTP 상태 코드 404를 설정하고, 응답을 종료한다.
- 서버 시작:
- 지정된 포트(port)에서 서버를 시작하고 요청을 대기한다.
- 서버가 시작되면 콘솔에 메시지를 출력한다.
반응형
'정보처리,전산 > NODEJS' 카테고리의 다른 글
nodemon 설치 | 설정 (0) | 2024.11.17 |
---|---|
POST 요청을 처리하여 데이터를 서버의 객체에 업데이트 (0) | 2024.11.17 |
이벤트 루프와 setImmediate 및 setTimeout의 실행 순서 (0) | 2024.11.15 |
이벤트 루프 (Event Loop) (0) | 2024.11.15 |
HTML 내에서 메뉴 클릭 이벤트를 처리 (0) | 2024.11.15 |