NODEJS EXPRESS

이은룡·2022년 4월 21일
0

WEB2

목록 보기
4/10

const:상수,변하지 않음
var:변수

라우터 기능

express 기본 구문

var express = require('express')
var app = express()
const port = 3000
//route방식
app.get('/', (req, res) => {
  res.send('Hello World!')
})
/*
app.get('path', callback);

app.get('/', function(req, res){	//함수로 대체 가능
  return res.send('Hello World!')
});
app.get('/page', function(req, res){
  return res.send('/page')
});

*/
app.listen(port, () => {
  console.log(`Example app listening on port ${port}`)
})

홈페이지 구현 예문

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);
  });
});

쿼리스트링없이 path방식 url

app.get('/page/:pageId', function(request, response){
  response.send(request.params);
});

내용추가

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; // title 수정
      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?id=${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);
    });
  });
});

미들웨어 기능

form 태그 정리

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))
app.post('/create_process', function(request, response){
//   var body = '';
//     request.on('data', function(data){
//         body = body + data;
//     });
//     request.on('end', function(){
//         var post = qs.parse(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();
//         })
//     });
// })
    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();

comprassion

app.use(compression());

미들웨어 생성

app.get('*', function(request, response, next){
  fs.readdir('./data', function(error, filelist){
    request.list = filelist;
    next();
  });
});

미들웨어 실행 순서

순서대로 실행
next('route')시 다음 라우터 실행

정적인 파일의 서비스

app.use(express.static('public'));

추가후 이미지태그

에러 해결

app.use((req, res, next) => {
  res.status(404).send("Sorry can't find that!")
})
app.use((err, req, res, next) => {
  console.error(err.stack)
  res.status(500).send('Something broke!')
}) //next(err) err에 해당

보안

helmet 이용

const helmet = require('helmet')
app.use(helmet())

nsp 이용

Express generator

기본적으로 필요한 파일과 코드를 자동으로 만들어주는 앱

0개의 댓글