리셋 되지 말자

Not found 오류 구현 본문

NodeJS/생활코딩

Not found 오류 구현

kyeongjun-dev 2020. 9. 9. 10:36

응답 200 과 응답 404

response.writeHead(200); // 200을 전송하면, 파일을 잘 전송했다고 하는 약속
response.end(template);

ip주소 오른쪽에 '/'이후로 파일 경로를 지정한다. 이때 파일이 존재하여 클라이언트에 잘 전송했다면 잘 전송했다는 의미로 200을 전송한다.(웹상의 약속이라고 한다.)

반대로 존재하지 않는 파일을 요청하면 404오류를 전송하여 클라이언트에게 알리도록 한다.

  • 소스 코드
var http = require('http');
var fs = require('fs');
var url = require('url') // url 모듈을 사용한다

var app = http.createServer(function (request, response) {
  var _url = request.url;
  var queryData = url.parse(request.url, true).query;
  var pathname = url.parse(_url, true).pathname;
  var title = queryData.id;
  console.log(queryData.id); // 쿼리 스트링 값 확인
  console.log(_url); // url 값 확인
  // if (_url == '/') {
  //   //_url = '\\index.html';
  //   title = 'Welcome';
  // }
  // if (_url == '/favicon.ico') {
  //   response.writeHead(404);
  //   response.end();
  //   return;
  // }


  //response.writeHead(200);

  // 루트 디렉토리 (/)로부터 존재하는 페이지를 요청하면 페이지 표시
  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.end(fs.readFileSync(__dirname + url));
      response.writeHead(200); // 200을 전송하면, 파일을 잘 전송했다고 하는 약속
      response.end(template);
    });
  }else{ // 없는 페이지를 요청하면 404 에러
    response.writeHead(404); 
    response.end('Not found');
  }

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

  



});
app.listen(80);

'NodeJS > 생활코딩' 카테고리의 다른 글

파일목록 알아내기  (0) 2020.09.09
제작-홈페이지 구현  (0) 2020.09.09
파일을 이용해 본문 구현  (0) 2020.09.08
파일 읽기  (0) 2020.09.08
동적 웹 만들기  (0) 2020.09.08
Comments