https://opentutorials.org/course/3332/21028
생활코딩님의 Node.js강의를 참고하였습니다.
1.URL 경로 추출
var pathname = url.parse(_url, true).pathname; // URL 경로 추출
2.루트 경로 처리
pathname이 '/'일 경우, data/ 디렉토리에서 title에 해당하는 파일을 읽습니다.
if (pathname === '/') { // 루트 경로 요청 시
// 'data/타이틀' 파일을 읽어 HTML 페이지 생성
fs.readFile(`data/${title}`, 'utf-8', function(err, description) {
3. 다른경로 요청시
다른 경로로 요청이 들어오면 404 상태 코드를 반환하고, 'Not found' 메시지를 응답합니다.
else { // 다른 경로 요청 시
response.writeHead(404); // 404 Not Found
response.end('Not found'); // 응답 내용
// HTTP, 파일 시스템, URL 모듈 로드
var http = require('http');
var fs = require('fs');
var url = require('url');
// HTTP 서버 생성
var app = http.createServer(function(request, response) {
var _url = request.url; // 요청 URL
var queryData = url.parse(_url, true).query; // 쿼리 파라미터 파싱
var pathname = url.parse(_url, true).pathname; // URL 경로 추출
var title = queryData.id; // 쿼리에서 'id' 추출
console.log(queryData);
if (pathname === '/') { // 루트 경로 요청 시
// 'data/타이틀' 파일을 읽어 HTML 페이지 생성
fs.readFile(`data/${title}`, 'utf-8', function(err, description) {
if (err) { // 파일 읽기 에러 처리
response.writeHead(500);
response.end('Server Error');
return;
}
// 동적으로 생성된 HTML 템플릿
var template = `
<!doctype html>
<html>
<head>
<title>WEB1 - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
<ol>
<li><a href="/?id=HTML">HTML</a></li>
<li><a href="/?id=CSS">CSS</a></li>
<li><a href="/?id=JavaScript">JavaScript</a></li>
</ol>
<h2>${title}</h2>
<p>${description}</p>
</body>
</html>
`;
response.writeHead(200); // 성공 응답 헤더
response.end(template); // HTML 응답
});
} else { // 다른 경로 요청 시
response.writeHead(404); // 404 Not Found
response.end('Not found'); // 응답 내용
}
});
// 서버를 3000번 포트에서 실행
app.listen(3000);
반응형
'BackEnd > Node.js' 카테고리의 다른 글
[Node.js] 루트페이지 처리하기 (0) | 2024.08.15 |
---|---|
[Node.js] 파일로 본문 구현 (0) | 2024.08.14 |
[Node.js] 파일 읽기 (0) | 2024.08.14 |