Node.js의 HTTP 모듈을 사용하여 HTTP 서버를 생성하고, 클라이언트 요청에 응답하며, 기본적인 라우팅을 처리하는 방법을 학습한다.
1. HTTP 서버 생성 및 응답
HTTP 모듈 소개
· Node.js의 http 모듈은 HTTP 서버와 클라이언트 기능을 제공한다.
· 이를 사용하여 웹 서버를 쉽게 구축할 수 있다.
HTTP 서버 생성
· http 모듈의 createServer 메서드를 사용하여 서버를 생성할 수 있다.
· 서버는 클라이언트의 요청을 받아 응답을 반환한다.
예제: 간단한 HTTP 서버 생성
const http = require('http');
// 서버 생성
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, World!\n');
});
// 서버 실행
const PORT = 3000;
server.listen(PORT, () => {
console.log(`Server running at http://localhost:${PORT}/`);
});
서버 실행 방법
· 위 코드를 server.js 파일로 저장한 후, 터미널에서 다음 명령어를 실행하여 서버를 시작할 수 있다.
node server.js
2. 기본적인 라우팅 처리
라우팅이란?
· 라우팅은 클라이언트의 요청 URL에 따라 다른 응답을 제공하는 기능을 의미한다.
· 서버는 다양한 경로(path)에 대해 다른 처리를 수행할 수 있다.
예제: 기본적인 라우팅 처리
const http = require('http');
const server = http.createServer((req, res) => {
// 요청 URL에 따른 분기 처리
if (req.url === '/') {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Welcome to the Home Page!\n');
} else if (req.url === '/about') {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Welcome to the About Page!\n');
} else {
res.statusCode = 404;
res.setHeader('Content-Type', 'text/plain');
res.end('Page Not Found\n');
}
});
const PORT = 3000;
server.listen(PORT, () => {
console.log(`Server running at http://localhost:${PORT}/`);
});
라우팅 예제 설명
· 서버는 클라이언트 요청의 URL을 req.url 속성을 통해 확인할 수 있다.
· 예제에서는 /, /about 경로에 대해 각각 다른 응답을 제공하고, 그 외의 경로에 대해 404 응답을 반환한다.
실습: HTTP 서버와 라우팅 구현하기
1. HTTP 서버 생성
· http 모듈을 사용하여 기본 HTTP 서버를 생성하고, 클라이언트의 요청에 "Hello, World!" 메시지를 반환하세요.
2. 기본적인 라우팅 처리
· 서버를 수정하여 /, /about, /contact 경로에 대해 각각 다른 메시지를 반환하도록 구현하세요.
· 존재하지 않는 경로에 대해 404 응답을 반환하도록 처리하세요.
예제: 라우팅 처리 추가
const http = require('http');
const server = http.createServer((req, res) => {
if (req.url === '/') {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Welcome to the Home Page!\n');
} else if (req.url === '/about') {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Welcome to the About Page!\n');
} else if (req.url === '/contact') {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Welcome to the Contact Page!\n');
} else {
res.statusCode = 404;
res.setHeader('Content-Type', 'text/plain');
res.end('Page Not Found\n');
}
});
const PORT = 3000;
server.listen(PORT, () => {
console.log(`Server running at http://localhost:${PORT}/`);
});
- 이전 수업 목록
'프로그래밍 > Node.js' 카테고리의 다른 글
[Node.js 강의 시리즈] 10강 - NPM과 패키지 관리 (0) | 2024.07.05 |
---|---|
[Node.js 강의 시리즈] 9강 - 이벤트 모듈 (events) (0) | 2024.07.04 |
[Node.js 강의 시리즈] 6강 - 파일 시스템 모듈 (fs) (0) | 2024.07.01 |
[Node.js 강의 시리즈] 5강 - Node.js의 비동기 처리 (0) | 2024.06.28 |
[Node.js 강의 시리즈] 4강 - Node.js 모듈 시스템 (0) | 2024.06.27 |