생활코딩

Coding Everybody

코스 전체목록

닫기

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. 200: 정상
    404: not found
  2. 비전공자
    오전 12:12 2024-04-21
  3. 김철흥
    2024.01.10
    완료!
  4. Hoon Ko
    20231016
  5. carpediem
    23.09.03 완료!!
  6. 어흥
    230702
  7. BF_Lee
    23.06.28
  8. Hojun Song
    2022-04-14 완료
  9. 감자
    22.12.01 완료
  10. 당당
    2022.10.19
  11. 뿔고래
    if문을 이용해서 url의 뒤에 쿼리구문이 아닌 문자열이 들어간다면 pathname이 '/' 가 아니게 된다.
    따라서 pathname이 '/'일 때만 정상적으로 탬플릿을 출력하도록 하고 아닐 때에는 페이지를 찾을 수 없었다고 말을 해준다.
  12. MelonMusk
    08/13
  13. i_am_es
    2022-08-07
  14. 아캔두잇
    20220804 완료
  15. 키다리아저씨
    220715 완
  16. toonfac
    220714 오후 2시 09분 완료
  17. 주재윤
    완료
  18. chohjender
    fs.readFile(`data/${queryData.id}`, 'utf8', function(err, description){
    .....
    });
    이 두 부분을 지우고 실행하니 됩니다
    혹시 undefined 가 나오시는 분들은 따라해 보시길....
  19. 밍기
    2022-01-18 완료
  20. 바밤바밤바
    1. http://localhost......TML
    2. http://localhost......d=H
    3. http://localhost:3000/?
    4.http://localhost:3000/aaaa

    강의중 의문점이 생겨서 4가지 경우를 모두 접속해보니 1,2,3 번은 정상 동작하고
    4번만 404 Not found페이지가 출력되네요 .

    단순히 직관적으로 생각했을 때에는 조건문에 조건으로 pathname이 '/' 슬래시여야 한다고 하였으니 슬래시 뒤로 의미없는 단어를 붙여도 조건문은 슬래시까지 읽고 출력할거라고 생각했는데
    로딩이 안되는게 궁금해서 콘솔로 찍어보니 1~3번은 패스네임이 '/' 인데
    4번은 '/aaaa' 통채로 반환이 되는군요.

    잘은 모르겠지만 자바스크립트가 url을 인식할 때에 pathname(/)뒤로 몇가지 정형화된 규격에 맞는 기호나 문자가 올때에만 그것을 정상적인 패스와 패스네임으로 구분할 수 있고 그렇지 않은경우라면 패스와 패스네임을 구분하지 못하고 묶어버리게 되는 걸까요? url에 대해 좀더 공부해봐야 겠네요 ...
  21. 김관호
    21.11.23
  22. BlitzcrankNautilusSeraphine
    질문하는 방법이 잘못됬습니다 ㅠㅠ 도와드릴수가 없어요
    대화보기
    • BlitzcrankNautilusSeraphine
      거의 대부분의 오류는 실행되는 main.js 파일과 디렉터리 구조의 차이때문입니다.
      대화보기
      • 초딩 개발자
        2021/10/11
      • pdpd
        211004
      • 전해성
        21.09.13 완료
      • 20단국
        2021-09-12 완료
      • 졸작완성하자
        210907 완료
      • ESBY
        혹시 코드를 똑같이 따라 썼는데 본문이 undefined로 나오시는 분들은,
        code파일과 data파일과 node.js등 모든 파일을 담고있는 디렉토리로 이동하신 다음에
        "node code/main.js" 라고 입력해보세요..! 전 이렇게 하니까 됐네요..
      • 고영히
        0823 완료
      • 승뇽뇽
        웬료
      • 박사장
        21 07 28 완료!
      • labis98
        20210721 completed!
      • Duke
        2021.07.17
      • warmpeace
        완료~
      • 황혼이
        너무 좋은데...
        아톰 에디터 syntax 테마 알려 주실 수 있니요?
      • Jeong Il Haan
        20210415
      • kujern
        하나도 이해가 가질 않는다.
      • 슬개골탈구
        해당 내용을 진행하고나니, 본문 출력이 undefined로 나옵니다.
        '파일을 이용해 본문 구현' 영상을 봤을 떄도 본문 출력이 되지 않아 한참을 고생하다가 댓글을 보고 해결했는데,
        또 다시 똑같은 문제가 생기네요 ㅜ 너무 답답합니다
      • byoonn
        완료
      • thebluerat
      • chimhyangmoo
        21.02.18
      • jeisyoon
        2021.02.07 완료
      • 마아앙
        2021.01.31
      • 임찬혁
        완료
      • 뭄수
        완료
      • ohhigo
        21/1/22 ★★★★★
        Not found 처리
      • wnstjd9701
        2021-01-18
      • 할수이다
        cmd에 왜 아무것도 안뜨는지 모르겠습니다..
      • Noah
        2021.01.04 완료!
      버전 관리
      egoing@gmail.com
      현재 버전
      선택 버전
      graphittie 자세히 보기