URL의 id값에 따라 본문의 내용이 바뀌는 동적 웹페이지를 만들어보겠습니다.
var http = require('http'); //http 모듈 요청
var fs = require('fs'); // fs 모듈 요청
var url = require('url'); //url 모듈 요청
var app = http.createServer(function(request,response){
var _url = request.url;
var queryData = url.parse(_url, true).query;
var title = queryData.id;
if(_url == '/'){ // Home일 경우
title = 'Welcome';
}
if(_url == '/favicon.ico'){
return response.writeHead(404);
}
response.writeHead(200);
fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){
var template = `
<!doctype html>
<html>
<head>
<title>WEB1 - ${title}</title>
<meta charset="utf-8">
</head>
<body>
<h1><a href="/">WEB</a></h1>
<ul>
<li><a href="/?id=HTML">HTML</a></li>
<li><a href="/?id=CSS">CSS</a></li>
<li><a href="/?id=JavaScript">JavaScript</a></li>
</ul>
<h2>${title}</h2>
<p>${description}</p>
</body>
</html>
`;
response.end(template);
})
});
app.listen(3000);
require('url') - 모듈을 요구한다는 의미입니다. 이 코드는 url모듈을 요구하는 것 입니다.
fs모듈은 File System의 약자로 파일 처리와 관련된 모듈이고, url모듈은 url정보를 객체로 가져와 분석하거나 url객체를 문자열로 바꿔주는 기능을 수행하는 모듈입니다.
request.url - 요청한 url주소를 가져옵니다.
url.parse(_url, true).query - _url문자열을 url객체로 바꿔줍니다. true이면 반환형이 객체이고, false이면 반환형이 문자열입니다. query는 query String을 의미하며 url 중에서 ?뒷부분을 말합니다.
queryData.id - 가져온 query객체의 id값을 의미합니다. 예를 들어 url이 "http://localhost:3000/?id=HTML" 라면 queryData.id는 HTML이 됩니다.
response.writeHead(404) - 응답헤더를 작성하는 것 입니다. 이 코드는 응답헤더를 404로 작성하는 것 입니다.
fs.readFile(`data/${queryData.id}`, 'utf8', function(err, data){ ... }) - 파일을 읽어온다는 의미입니다. data/${queryData.id} 는 읽어올 파일의 위치입니다. utf8은 한글이 깨지지 않고 잘 출력될 수 있도록 하는 인코딩 방식입니다.
reponse.end(template) - 응답본문을 작성하는 것입니다.
app.listen(3000) - 서버를 몇 번 포트에서 연결하는지를 의미합니다. 이 코드는 서버를 3000번 포트에서 연결합니다. 기본 포트 번호는 80번 입니다.
'Back-end > Node.js' 카테고리의 다른 글
[Node.js] 입력 정보와 출력 정보에 대한 보안 (0) | 2020.12.25 |
---|---|
[Node.js] 객체(Object), 모듈(Module) 사용하여 리팩토링 (0) | 2020.12.25 |
[Node.js] 파일 수정, 삭제하기 (0) | 2020.12.23 |
[Node.js] POST방식으로 데이터 전송하고 받기, 파일 생성, 리다이렉션 (0) | 2020.12.23 |
[Node.js] 동기와 비동기 / callback (0) | 2020.12.22 |