본문 바로가기
혼자 공부하는 것들/node.js

node.js Not found 예외처리 추가

by applepick 2020. 11. 21.
반응형

url에서 잘못된  path로 이동했을 때 오류 페이지를 띄워주는 작업을 공부했다.

이런 식으로 nonono라는 경로가 없어서 Not found를 띄워주었다.

 console.log(url.parse(_url, true)); //url 경로를 보여준다.

일단 되는 url을 확인해보기위해 콘솔로 경로를 다 찍어보자.

이런 식으로 루트 패치를 확인할 수 있다. 루트 패치를 확인했으니 pathname이란 변수를 만들어 루트 패치의 값을 가져온다. 

그 값으로 이제 비교를 한다.

    if(pathname === '/'){
    }else{
        response.writeHead(404); 
        //웹서버랑 웹페이지랑 통신하기위한 간결한 약속 200이라는 값을 웹서버에 주면 
        //맞는지 확인 파일이 없다면 404를 리턴
        response.end('Not found');
    }
    

이런 식으로 루트 패치이면 if문에서 실행하고 아니라면 Not found를 출력한다. 

 

Main.js파일을 살펴보자

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 = url.parse(_url, true).query;//url의 뒤값을 변수에 저장
    var pathname = url.parse(_url, true).pathname; //path의값 확인
    var title = queryData.id; // ${queryData.id}을 쓰면 보기 힏드니까 title이란 변수에 저장!
 
    if(pathname === '/'){
      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.writeHead(200);
        response.end(template);
      });
      }
      else {
        response.writeHead(404); //웹서버랑 웹페이지랑 통신하기위한 간결한 약속 200이라는 값을 웹서버에 주면 맞는지 확인 파일이 없다면 404를 리턴
        response.end('Not found');
      } 
 
});
app.listen(3000); //3000번포트에 node.js웹서버를 실행시킨다는 문장 80번 포트는 기본적인 포트라서 뒤에 작성안해도된다. 

주석을 달아놓았다. 궁금한 점을 댓글로 남겨주길 바란다. 끝!

반응형

댓글