수업소개
여기서는 미들웨어의 개념을 소개하고, 타인이 만든 미들웨어를 사용하는 방법을 알아봅니다.
강의 1
body-parser를 이용해서 post 방식으로 전송된 form 데이터를 쉽게 가져오는 방법을 살펴보겠습니다.
소스코드
main.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | var express = require( 'express' ) var app = express() var fs = require( 'fs' ); var path = require( 'path' ); var qs = require( 'querystring' ); var bodyParser = require( 'body-parser' ); var sanitizeHtml = require( 'sanitize-html' ); var template = require( './lib/template.js' ); app.use(bodyParser.urlencoded({ extended: false })); //route, routing //app.get('/', (req, res) => res.send('Hello World!')) app.get( '/' , function (request, response) { fs.readdir( './data' , function (error, filelist){ var title = 'Welcome' ; var description = 'Hello, Node.js' ; var list = template.list(filelist); var html = template.HTML(title, list, `<h2>${title}</h2>${description}`, `<a href= "/create" >create</a>` ); response.send(html); }); }); app.get( '/page/:pageId' , function (request, response) { fs.readdir( './data' , function (error, filelist){ var filteredId = path.parse(request.params.pageId).base; fs.readFile(`data/${filteredId}`, 'utf8' , function (err, description){ var title = request.params.pageId; var sanitizedTitle = sanitizeHtml(title); var sanitizedDescription = sanitizeHtml(description, { allowedTags:[ 'h1' ] }); var list = template.list(filelist); var html = template.HTML(sanitizedTitle, list, `<h2>${sanitizedTitle}</h2>${sanitizedDescription}`, ` <a href= "/create" >create</a> <a href= "/update/${sanitizedTitle}" >update</a> <form action= "/delete_process" method= "post" > <input type= "hidden" name= "id" value= "${sanitizedTitle}" > <input type= "submit" value= "delete" > </form>` ); response.send(html); }); }); }); app.get( '/create' , function (request, response){ fs.readdir( './data' , function (error, filelist){ var title = 'WEB - create' ; var list = template.list(filelist); var html = template.HTML(title, list, ` <form action= "/create_process" method= "post" > <p><input type= "text" name= "title" placeholder= "title" ></p> <p> <textarea name= "description" placeholder= "description" ></textarea> </p> <p> <input type= "submit" > </p> </form> `, '' ); response.send(html); }); }); app.post( '/create_process' , function (request, response){ var post = request.body; var title = post.title; var description = post.description; fs.writeFile(`data/${title}`, description, 'utf8' , function (err){ response.writeHead(302, {Location: `/?id=${title}`}); response.end(); }); }); app.get( '/update/:pageId' , function (request, response){ fs.readdir( './data' , function (error, filelist){ var filteredId = path.parse(request.params.pageId).base; fs.readFile(`data/${filteredId}`, 'utf8' , function (err, description){ var title = request.params.pageId; var list = template.list(filelist); var html = template.HTML(title, list, ` <form action= "/update_process" method= "post" > <input type= "hidden" name= "id" value= "${title}" > <p><input type= "text" name= "title" placeholder= "title" value= "${title}" ></p> <p> <textarea name= "description" placeholder= "description" >${description}</textarea> </p> <p> <input type= "submit" > </p> </form> `, `<a href= "/create" >create</a> <a href= "/update?id=${title}" >update</a>` ); response.send(html); }); }); }); app.post( '/update_process' , function (request, response){ var post = request.body; var id = post.id; var title = post.title; var description = post.description; fs.rename(`data/${id}`, `data/${title}`, function (error){ fs.writeFile(`data/${title}`, description, 'utf8' , function (err){ response.redirect(`/?id=${title}`); }) }); }); app.post( '/delete_process' , function (request, response){ var post = request.body; var id = post.id; var filteredId = path.parse(id).base; fs.unlink(`data/${filteredId}`, function (error){ response.redirect( '/' ); }); }); app.listen(3000, function () { console.log( 'Example app listening on port 3000!' ) }); |