Not Found 구현

꼬디바아 ㅣ 2024. 2. 22. 10:20

728x90

대표이미지

 

728x90

 

🖥️ Not Found

Not Found는 404 라는 status code이다. Not Found(404)에러는 "웹페이지를 표시 할 수 없다" 라는 뜻이다.

그렇다면 Not Found라는 페이지가 나오는 이유를 살펴보자

 

  1. 부적절 한 URL로 판단되어 사전 차단
  2. 정확하지 않은 주소를 입력
  3. 사용이 제한된 URL
  4. 유료서비스 기간 만료

 

여러가지 이유들로 인해 Not Found(404) 페이지가 뜨는 것이다. 그래서 우리가 웹페이지를 개발할 때는 Not Found(404) 페이지도 개발을 해야 한다.

 

Node.js 에선 어떻게 할 수 있는지 확인해 보자.

 

var http = require('http');
var fs = require('fs');//fs module (= File System module) 이란, 파일 처리와 관련된 전반적인 작업을 하는 모듈을 말한다.
var url = require('url');

var app = http.createServer(function (request, response) {
  var _url = request.url;
  var queryData = url.parse(_url, true).query; //query string을 불러 온다.
  var pathname = url.parse(_url, true).pathname;
  var title = queryData.id;

// not found
  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>
      <ol>
        <li><a href="/?id=HTML">HTML</a></li>
        <li><a href="/?id=CSS">CSS</a></li>
        <li><a href="/?id=JavaScript">JavaScript</a></li>
      </ol>
      <h2>${title}</h2>
      <p>
        ${description}
      </p>
    </body>
    </html>
    `;
      response.writeHead(200);
      response.end(template);//이 코드가 사용자가 실행하고 싶은 파일을 넣는다.
      //javascript를 통해서 우리가 읽어드려야 하는 파일을 만든 것이다.
      // 사용자가 생성한 파일을 전송한다.
    })
  } else {
    response.writeHead(404);
    response.end('Not found');
  }
});
app.listen(3000); //포트 번호를 3000번으로 지정

 

node.js 에서 not found 페이지를 만드는 코드이다.

 

먼저 pathname을 알아야 하기 때문에 콘솔창에 띄어 본다.

console.log(url.parse(_url, true));

 

위 코드와 같이 입력하면 다음과 같은 결과가 출력된다.

 

pathname 결과화면

 

여기서 pathname을 찾는 코드를 작성해준다.

var pathname = url.parse(_url, true).pathname;

 

그리고 조건문을 써서 pathname이 /와 같다면 정상적인 웹페이지를 출력하고 그렇지 않다면 Not found 페이지를 출력하는 것이다.

 

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>
      <ol>
        <li><a href="/?id=HTML">HTML</a></li>
        <li><a href="/?id=CSS">CSS</a></li>
        <li><a href="/?id=JavaScript">JavaScript</a></li>
      </ol>
      <h2>${title}</h2>
      <p>
        ${description}
      </p>
    </body>
    </html>
    `;
      response.writeHead(200);
      response.end(template);//이 코드가 사용자가 실행하고 싶은 파일을 넣는다.
      //javascript를 통해서 우리가 읽어드려야 하는 파일을 만든 것이다.
      // 사용자가 생성한 파일을 전송한다.
    })
  } else {
    response.writeHead(404);
    response.end('Not found');
  }

 

결과는 다음과 같다.

 

not found 결과화면

 

이제 not found를 원하는대로 디자인 해 사용자에게 보여주면 된다.

 

Not found 웹페이지 디자인 예시를 몇 개 보자

출처 : 네이버 - not found
출처 : 카카오 - not found

 

728x90

'👨‍💻 node.js' 카테고리의 다른 글

Node.js(express)와 MySQL 연결  (0) 2024.02.22
회원인증 방법론 (session-based, JWT, OAuth)  (0) 2024.02.22
Query String  (2) 2024.02.20
URL의 이해  (4) 2024.02.19
Node.js 설치  (0) 2024.02.19