본문 바로가기

문돌이 존버/Node.js 스터디

Node.js 콘솔 입력값(input) 및 Not found 오류 구현 feat. 생활코딩

반응형
본 글은 생활코딩의 Node.js 강의를 보고 정리한 것입니다.

파이썬의 input() 처럼 Node.js에서도 콘솔에서 값을 입력할 수 있습니다. 이때, process.argv 를 사용하면 됩니다.

// basic.js
var args = process.argv;
console.log(args);
console.log(args[2]);
# 콘솔에서 입력
node basic.js 2

// 조건문
if(args[2] === '1') {
  console.log('C1');
} else {
  console.log('C2');
}

다음은 미리 정의되지 않은 url 주소에 접근했을 때 해당 페이지가 없다는 메시지를 표현하기 위한 작업입니다.

var http = require('http');
var fs = require('fs');
var url = require('url');

var app = http.createServer(function(request, response) {
    var _url = request.url;
    var queryData = new URL('http://localhost:3000' + _url);
    
    var title = queryData.searchParams.get('id');
    var path = queryData.pathname;

    if(path === '/') {
        title = 'Welcome!!';
        fs.readFile(`data/${title}`, 'utf8', (err, data) => {
            var description = data;
            var template = `
            <!doctype html>
            <html>
            <head>
                <title>WEB1 - ${title}</title>
                <meta charset="utf-8">
            </head>
            <body>
                <h1><a href="index.html">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.writeHead(200);
            response.end(template);
        });
    } else {
        response.writeHead(404);
        response.end('Not found');
    }
});
app.listen(3000);

위에서 queryData 객체를 출력해보면 아래와 같이 딕셔너리 형태로 되어있습니다. "/?id=HTML" 과 다른 형식으로 "/asdfsd" 라는 존재하지 않는 url 주소를 입력하면 pathname: '/asdfsd' 로 나옵니다.

이때 else 구문에 걸리고, response.end('Not found') 를 출력하라고 했기 때문에 실제 웹 사이트에서도 해당 메시지가 등장하게 됩니다.

728x90
반응형