📝

012_blog_UI\router

// 파일이름 : 012_blog_UI\router\blog.js const nunjucks = require('nunjucks'); const express = require('express'); let blogs = [{         id : 1,         title : 'title1',         content : 'content1',         section : 'section1',         pubDate : new Date().toString(),         modDate : new Date().toString()     }, {         id : 2,         title : 'title2',         content : 'content2',         section : 'section2',         pubDate : new Date().toString(),         modDate : new Date().toString()     }, {         id : 3,         title : 'title3',         content : 'content3',         section : 'section3',         pubDate : new Date().toString(),         modDate : new Date().toString()     }]; const router = express.Router(); //  / - 메인화면 최근 게시물 3개 //  /blog - 블로그 글 리스트 전부 router.get('/', (req, res, next) => {     console.log(req.query);     const section = req.query.section;     const data = section ? blogs.filter(b => b.section === section) : blogs;     // console.log(data); // 수정 1     res.render('test1.html', {data}); // 수정 1 data:data와 같습니다. 둘 다 같을 경우 생략 가능해요. }) //  /blog/?section=:section - 해당 섹션만 모아 볼 수 있도록 //  /about - 내 소개 // * /blog/:id - 블로그 상세 글 // ex) http://localhost:8080/blog/1 router.get('/:id', (req, res, next) => {     // console.log(req.params.id);     const id = req.params.id;     // console.log(blogs.find(b => b.id == 1));     const blog = blogs.find(b => b.id == id); //타입이 number, string     if (blog) {         res.status(200).json(blog);     } else {         res.status(404).json({warninig : ${id}로 접근하는 것은 비정상적인 접근입니다.})     } }) //  /write - 로그인시에만 활성화(생성, 수정) -> post값은 /blog로 router.post('/', (req, res, next) => {     const id = blogs.length + 1;     const title = req.body.title; // const {key1, key2...} = req.body;     const content = req.body.content;     const section = req.body.section;     const pubDate = new Date().toString();     const modDate = new Date().toString();     // 둘 다 같을 때에는 하나 생략     let blog = {id, title, content, section, pubDate, modDate};     blogs.push(blog);     res.status(201).json(blog); // 201은 create     /     postman test data     post : localhost:8080/blog     post, body, raw, json, data(아래) 확인 후 send     {         "title" : "title4",         "content" : "content4",         "section" : "section4"     }     send 후 아래 url로 접속하면 4번이 들어와있는 것 확인     localhost:8080/blog     */ }) // 수정(PUT) : blog/:id router.put('/:id', (req, res, next) => {     const id = req.params.id;     const blog = blogs.find(b => b.id == id)     if (blog){ // 각각의 값이 비어있을 수도 있음         blog.title = req.body.title;         blog.content = req.body.content;         blog.section = req.body.section;         blog.modDate = new Date().toString();         res.status(200).json(blogs);     } else {         res.status(404);     }     /*     postman test data     post : localhost:8080/blog/1     put, body, raw, json, data(아래) 확인 후 send     {         "id" : 1, // 굳이 id가 들어가지 않아도 됨.         "title" : "title1-수정",         "content" : "content1-수정",         "section" : "section1-수정"     }     응답값으로 바로 확인 가능     */ }) // 삭제(DELETE) : blog/:id router.delete('/:id', (req, res, next) => {     const id = req.params.id;     blogs = blogs.filter(b => b.id != id)      //아닌 것들만 묶어주거나 remove, splice를 사용해서 삭제, filter가 가장 깔끔     res.status(200).json(blogs); //굳이 204를 보내줄거면 200로     // postman test data     // post : localhost:8080/blog/1     // delete, body, raw, json, data(필요없음) 확인 후 send }) module.exports = router;
// 파일이름 : 012_blog_UI\router\blog2.js const nunjucks = require('nunjucks'); const express = require('express'); let blogs = [{         id : 1,         title : 'title1',         content : 'content1',         section : 'section1',         pubDate : new Date().toString(),         modDate : new Date().toString()     }, {         id : 2,         title : 'title2',         content : 'content2',         section : 'section2',         pubDate : new Date().toString(),         modDate : new Date().toString()     }, {         id : 3,         title : 'title3',         content : 'content3',         section : 'section3',         pubDate : new Date().toString(),         modDate : new Date().toString()     }]; const router = express.Router(); //  / - 메인화면 최근 게시물 3개 //  /blog - 블로그 글 리스트 전부 router.get('/', (req, res, next) => {     console.log(req.query);     const section = req.query.section;     const data = section ? blogs.filter(b => b.section === section) : blogs;     // console.log(data); // 수정 1     res.render('test1.html', {data}); // 수정 1 data:data와 같습니다. 둘 다 같을 경우 생략 가능해요. }) //  /blog/?section=:section - 해당 섹션만 모아 볼 수 있도록 //  /about - 내 소개 // * /blog/:id - 블로그 상세 글 // ex) http://localhost:8080/blog/1 router.get('/:id', (req, res, next) => {     // console.log(req.params.id);     const id = req.params.id;     // console.log(blogs.find(b => b.id == 1));     const blog = blogs.find(b => b.id == id); //타입이 number, string     if (blog) {         res.status(200).json(blog);     } else {         res.status(404).json({warninig : ${id}로 접근하는 것은 비정상적인 접근입니다.})     } }) //  /write - 로그인시에만 활성화(생성, 수정) -> post값은 /blog로 router.post('/', (req, res, next) => {     const id = blogs.length + 1;     const title = req.body.title; // const {key1, key2...} = req.body;     const content = req.body.content;     const section = req.body.section;     const pubDate = new Date().toString();     const modDate = new Date().toString();     // 둘 다 같을 때에는 하나 생략     let blog = {id, title, content, section, pubDate, modDate};     blogs.push(blog);     res.status(201).json(blog); // 201은 create     /     postman test data     post : localhost:8080/blog     post, body, raw, json, data(아래) 확인 후 send     {         "title" : "title4",         "content" : "content4",         "section" : "section4"     }     send 후 아래 url로 접속하면 4번이 들어와있는 것 확인     localhost:8080/blog     */ }) // 수정(PUT) : blog/:id router.put('/:id', (req, res, next) => {     const id = req.params.id;     const blog = blogs.find(b => b.id == id)     if (blog){ // 각각의 값이 비어있을 수도 있음         blog.title = req.body.title;         blog.content = req.body.content;         blog.section = req.body.section;         blog.modDate = new Date().toString();         res.status(200).json(blogs);     } else {         res.status(404);     }     /*     postman test data     post : localhost:8080/blog/1     put, body, raw, json, data(아래) 확인 후 send     {         "id" : 1, // 굳이 id가 들어가지 않아도 됨.         "title" : "title1-수정",         "content" : "content1-수정",         "section" : "section1-수정"     }     응답값으로 바로 확인 가능     */ }) // 삭제(DELETE) : blog/:id router.delete('/:id', (req, res, next) => {     const id = req.params.id;     blogs = blogs.filter(b => b.id != id)      //아닌 것들만 묶어주거나 remove, splice를 사용해서 삭제, filter가 가장 깔끔     res.status(200).json(blogs); //굳이 204를 보내줄거면 200로     // postman test data     // post : localhost:8080/blog/1     // delete, body, raw, json, data(필요없음) 확인 후 send }) module.exports = router; module.exports['blogs'] = blogs; // 좋은 방법은 아닙니다. DB 할 때 다시 리펙토링 해야합니다.