Back-end/Node.js

[Node.js] URL모듈을 통해서 동적 웹페이지 만들기

poppy 2020. 12. 21. 14:23
반응형

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(_urltrue).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(errdata){ ... }) - 파일을 읽어온다는 의미입니다. data/${queryData.id} 는 읽어올 파일의 위치입니다. utf8은 한글이 깨지지 않고 잘 출력될 수 있도록 하는 인코딩 방식입니다.

reponse.end(template) - 응답본문을 작성하는 것입니다.

app.listen(3000) - 서버를 몇 번 포트에서 연결하는지를 의미합니다. 이 코드는 서버를 3000번 포트에서 연결합니다. 기본 포트 번호는 80번 입니다.

반응형