반응형
에러처리
app.use(function(req, res, next) {
res.status(404).send('Sorry cant find that!');
});
app.use(function (err, req, res, next) {
console.error(err.stack)
res.status(500).send('Something broke!')
});
위의 코드들을 맨 아래에 적용하면 에러 발생시 설정한 값이 뜨도록 설정할 수 있다.
main.js
const express = require('express')
const app = express()
const port = 3000
var fs = require('fs');
var qs = require('querystring');
var template = require('./lib/template.js');
var path = require('path');
var sanitizeHtml = require('sanitize-html');
var bodyParser = require('body-parser')
app.use(express.static('public'));
app.use(bodyParser.urlencoded({ extended: false }))
app.get('*', function(request, response, next){
fs.readdir('./data', function(error, filelist){
request.list = filelist;
next();
});
});
app.get('/', (request, response) => {
var title = 'Welcome';
var description = 'Hello, Node.js';
var list = template.list(request.list);
var html = template.HTML(title, list,
`<h2>${title}</h2>${description}
<img src="/image/블레이드 러너 2049 바탕화면.jpg " style="width:300px; display:block; margin-top:10px;">`,
`<a href="/create">create</a>`
);
response.send(html);
});
app.get('/page/:pageId',(request, response, nest)=>{
var filteredId = path.parse(request.params.pageId).base;
fs.readFile(`data/${filteredId}`, 'utf8', function(err, description){
//if문을 이용하여 err 발생시 next(err)를 통해 설정한 에러 메세지 등장하도록함.
if(err){
next(err);
} else {
var title = request.params.pageId;
var sanitizedTitle = sanitizeHtml(title);
var sanitizedDescription = sanitizeHtml(description, {
allowedTags:['h1']
});
var list = template.list(request.list);
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', (request, response)=>{
var title = 'WEB - create';
var list = template.list(request.list);
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', (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', (request, response)=>{
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(request.list);
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', (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', (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.use(function(req, res, next) {
res.status(404).send('Sorry cant find that!');
});
//에러 메세지 적용
app.use(function (err, req, res, next) {
console.error(err.stack)
res.status(500).send('Something broke!')
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`)
})
반응형
'프로그래밍 개발 > Express' 카테고리의 다른 글
Express - 쿠키의 기본 개념 (0) | 2021.01.15 |
---|---|
Express - 라우터의 파일로 분리 정리 (0) | 2021.01.14 |
Express - 정적인 파일의 서비스 (0) | 2021.01.14 |
Express - 미들웨어 (0) | 2021.01.14 |
Express - Express 홈페이지 구현 적용 (0) | 2021.01.14 |
댓글