-
Node.js ) Not Found Exception 구현 하기Programming/Node.js 2019. 8. 16. 12:11
TIL(Today I learned) 을 기록하는 공간입니다.
잘못된 내용 또는 부족한 내용에 대한 수정 및 지적 환영합니다.
▶생활코딩 : Node.js - Not Found 구현
https://www.opentutorials.org/course/3332/21063
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 queryDa
www.opentutorials.org
Not Found Exception이라고 함은 페이지를 찾을 수 없을 때 발생하는 Exception으로써 흔히 404 Error 라고 불린다.
var _url = request.url; var queryData = url.parse(_url,true);
위 코드로 URL에 어떠한 정보들이 담겼는지 확인할 수 있는데, log로 찍어 확인해보면 그 형태는 이러하다.
Url { protocol: null, slashes: null, auth: null, host: null, port: null, hostname: null, hash: null, search: '?id=HTML', query: [Object: null prototype] { id: 'HTML' }, pathname: '/', path: '/?id=HTML', href: '/?id=HTML' }
url에 들어있는 많은 데이터 중에서 오늘은 pathname을 이용하여 404 Error를 구현해보고자 한다.
*pathname과 path의 차이?
- pathname은 queryString 을 제외한 경로를 담고 있다.- path는 경로와 함께 queryString을 담고있다.
나는 path가 없는 경로, 존재하지 않는 경로(현재는 root 이외의 path)의 접속을 할 경우 Not Found Exception을 던질 것이다.
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 객체에서 pathname을 추출 var pathname = url.parse(_url, true).pathname; console.log(url.parse(_url,true)); var title = queryData.id; //pathname이 root 이면 아래의 코드를 실행하라. if(pathname === '/'){ fs.readFile(`data/${queryData.id}`, 'utf-8', function (err, description) { var templete = ` <!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> `; //웹서버의 응답 (처리결과가 어떤지 알려줌) //200 : 파일 전송 성공 response.writeHead(200); response.end(templete); }); } else { //pathname이 root가 아닌 그 이외의 경로인 경우 //페이지를 찾을 수 없음 response.writeHead(404); response.end('Not found'); } }); app.listen(3000);
▶새롭게 알게 된 점
- 사용자가 어떤 경로로 접속을 했는지는 url의 pathname을 통하여 할 수 있음.
- url.parse(_url,true)주어진 url을 분석하여 보여줌 -> url에는 생각보다 많은 정보가 들어있음.
- response.writeHead() 으로 웹서버의 처리결과를 전달 할 수 있음.
'Programming > Node.js' 카테고리의 다른 글
Node.js) 객체 활용하기 (0) 2019.09.02 Node.js ) Javascript에서는 변수를 함수에 대입할 수 있을까? (0) 2019.09.02 Node.js ) Post 방식으로 Data 넘기기 (0) 2019.08.16 Node.js ) PM2 사용 방법 (0) 2019.08.16 Node.js ) 글 목록 불러오기 (0) 2019.08.16