Node.js

App - Not found 오류 구현

수업소개

존재하지 않는 정보에 대한 요청이 들어왔을 때 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;
    var pathname = url.parse(_url, true).pathname;
    var title = queryData.id;

    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);
      response.end('Not found');
    }



});
app.listen(3000);

 

댓글

댓글 본문
  1. 콜라
    20201014완료
  2. Yong Hyun Lee
    완료 201001
  3. 윤병록
    20.09.24
  4. OQ the YOUNG
    2020.09.08
  5. CodingChan
    2020. 09. 06
  6. 마준
    완료
  7. 마준
    완료
  8. 코딩조아
    20.08.05
  9. 뚜따띠또따
    20/07/31 완료!
  10. 코딩하는렌즈쟁이
    2020-07-24 (금)
    완료!
  11. 리다
    20200713
  12. 불스택
    20.07.10 완료
    감사합니다
  13. 영호팍
    console.log(request.url);을 사용했을 때 나오는 것 같아요. 그래서 저도 님 댓글 보고 궁금해서 console.log(request);로 하고 cmd 실행봤는데 여러 정보가 뜨더라고요. 보니까 url값이 html에서만 2개가 발견 되더라고요. javascript와 css는 이미지 파일이 없어서 1개만 뜹니다. 제가 생각하기에는 html이 이미지를 머금고 있어서 url이 2개가 뜬게 아닐까요!!
    대화보기
    • 영호팍
      출석스
    • Amousk
      좋은강의 감사합니다.
    • 임승원
      HTML로 들어갈 때는 pathname가 '/'이 아니라 '/coding.jpg' 인데
      1. 왜 얘만 /coding.jpg로 뜨는지
      2. 얘만 /coding.jpg로 뜸에도 불구하고 조건문에서 if (pathname==='/')에서 걸러지지 않고 내용이 잘 나오는지
      궁금합니다.
    • 2020.06.15
    • Katherine Roh
      완료 :)
    • 김보미
      완료
    • 김재익
      완료
    • 바다의왕자
      완료
    • 윤영훈
      오 감사합니다!
      대화보기
      • Kuk-Il Kim
        https://m.blog.naver.com......%2F

        해당 블로그를 참고하시면 path, pathname 등 url 포맷에 대한 이해를 높이실수 있습니다.
      • Eunsung Shin
        완료
      • 준바이
        2020 03 18
      • 어인
        제가 공부하고 이해하기로는

        'localhost:3000/' 에서 '/' 기호는 path(경로)의 시작을 알려줍니다.
        '/폴더/폴더/파일.확장자'를 통틀어 pathname이라고 하는 것 아닌가 생각합니다.

        '?' 기호는 query string의 시작을 알려줍니다.

        query string은 매개변수를 가질 수 있습니다.
        'id=HTML'도 하나의 매개변수이고, (name=value)의 형태입니다.
        query string에 여러개의 매개변수를 주고싶을 때는 '&' 기호를 사용합니다.
        그럼 '?id=HTML&(name=value)' 같은 형태가 되는 것입니다.!
        대화보기
        • 03.09 완료
        • eddylee123456
          복습
        • eddylee123456
          완료
        • Gritter
          감사합니다.
        • 리암
          감사합니다.
        • 스티븐잡숴
          완료
        • 차누누
          ?id= 만 붙여주면 페이지가 아무렇게나 써도 페이지가 출력이 되네영...
        • 임은정
          완료
          저도 댓글보고 생각도 못했던거 배워갑니당
        • ㅇㅇ
          저도 처음에 이게 이해가 안갔는데 직접 찍어보니까 이해가더라구요 유효하지 않은 값은 /뒤에 모든 값을 반환시킵니다
          대화보기
          • 파이어뱃
            2019_12_05 complete
          • codinginpain
            수강완료쓰
          • 블루
            제 생각에는 pathname 은 쿼리스트링(? 뒤에 붙는 값)만 뺀 값이라고 했으니까 /favicon.ico?이거나 /favicon.ico?id=333 이라면 pathname은 /favicon.ico가 맞는 것 같아요
            대화보기
            • 박창신
              수강완료
            • 쑤우
              수강완료. 감사합니다.
            • 굼벵이
              완료
            • 망고복숭아
              저 이해가 잘 안되는 부분이 localhost:3000/favicon.ico도 pathname은 똑같이 '/' 가 아닌가요??
            • 시계의온도
              저는 왜 console.log를 실행했을때 cmd에 아무것도 안나올까요?
            • CronEB
              완료
            • YesterdayKite
              완료. 감사합니다!
            • 허공
              190510 감사합니다.
            • youngjin.lee
              Comlete
            • 위준우
              완료
            • 통신 MDP 좋아 ^_^
              완료했습니다 ^___________________________________________________^
            • 통신 MDP 너무 좋아 ^_^
              완료 ^______________________________________^
            버전 관리
            egoing
            현재 버전
            선택 버전
            graphittie 자세히 보기