Node.js를 사용해 동적으로 파일을 읽어와 웹페이지를 생성한다.
fs.readdir 파일리스트를 가져와 id에 따라 링크와 txt를 달리한다.
var http = require('http');
var fs = require('fs');
var url = require('url');
// HTTP 서버를 생성합니다. 요청을 처리하는 콜백 함수를 전달합니다.
var app = http.createServer(function(request,response){
var _url = request.url;
var queryData = url.parse(_url, true).query;
var pathname = url.parse(_url, true).pathname;
// 루트 경로('/')로 요청이 들어온 경우
if(pathname === '/'){
// id가 정의되지 않은 경우
if(queryData.id === undefined){
// data 디렉토리에서 파일 목록을 읽어옵니다.
fs.readdir('./data', function(error, filelist){
var title = 'Welcome';
var description = 'Hello, Node.js';
var list = '<ul>';
// 파일 목록을 순회하면서 각 파일에 대한 링크를 생성합니다.
for(var i = 0; i < filelist.length; i++){
list += `<li><a href="/?id=${filelist[i]}">${filelist[i]}</a></li>`;
}
list += '</ul>';
// 템플릿을 생성하고 응답을 보냅니다.
var template = `
<!doctype html>
<html>
<head>
<title>WEB1 - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
${list}
<h2>${title}</h2>
<p>${description}</p>
</body>
</html>
`;
response.writeHead(200);
response.end(template);
});
}
// id가 정의된 경우
else {
// 해당 id에 해당하는 파일을 읽어옵니다.
fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){
// 파일을 읽어와 템플릿을 생성합니다.
var title = queryData.id;
var template = `
<!doctype html>
<html>
<head>
<title>WEB1 - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
<a href="/">돌아가기</a>
<h2>${title}</h2>
<p>${description}</p>
</body>
</html>
`;
response.writeHead(200);
response.end(template);
});
}
}
// 루트 이외의 경로로 요청이 들어온 경우
else {
// 404 오류를 반환합니다.
response.writeHead(404);
response.end('Not found');
}
});
// 서버가 지정된 포트(3000)에서 요청을 수신하도록 설정합니다.
app.listen(3000);
'JavaScript > Node.js' 카테고리의 다른 글
보안 오류: (:) [], PSSecurityException (0) | 2024.02.07 |
---|---|
동기/비동기: readFileSync를 사용하면 순차적으로 진행한다. (0) | 2024.02.07 |
Node.js 조건문, else일때 response.writeHead(404) 404오류를 반환하다 (0) | 2024.02.07 |
Node.js 콘솔에서의 입력값 사용하기 process.argv (0) | 2024.02.07 |
Node.js 로 간단한 웹서버 만들기: 정적/동적파일서버 (0) | 2024.02.07 |