queryString이 있으면 페이지를 보여주고 없으면 "Not Found"를 표시하도록 만들어보자
어떻게 구분할 수 있을까?
1. parse를 통해 구분점을 찾아보기
var urlObj = url.parse(_url, true); console.log(urlObj); # Url { protocol: null, slashes: null, auth: null, host: null, port: null, hostname: null, hash: null, search: null, query: [Object: null prototype] {}, pathname: '/', path: '/', href: '/' }
pathname은 '/' 로 구분되는 것을 알 수 있음.
if(pathname === '/'){ 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> ${description} </body> </html> `; response.writeHead(200); response.end(template); } else { response.writeHead(404); response.end("Not Found! error"); }
if (queryData.id === undefined){}
else{}
if(pathname === '/'){ if (queryData.id === undefined){ var title = "Welcome!" var description = "Hello node.js" 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> ${description} </body> </html> `; response.writeHead(200); response.end(template); } else{ var title = queryData.id; fs.readFile(`data/${queryData.id}`,'utf8',(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> ${description} </body> </html> `; response.writeHead(200); response.end(template); }); }