10/26 학습

HARIBO·2021년 10월 26일
0

Express모듈 활용

  • 미들웨어 함수 : 요청 오브젝트, 응답 오브젝트, 요청-응답 주기 중 그 다음의 미들웨어 함수(next)에 대한 액세스 권한을 갖는 함수
    • 미들웨어 함수가 요청-응답 주기를 res.end(), res.json()등으로 종료하지 않는 경우, next() 함수를 호출해, 다음 미들웨어 함수에 제어를 전달해야 한다.
const express = require('express');
const app = express()
//서버를 시작하며 3000번 포트에서 연결을 청취한다.
const port = 3000

//모든 요청에 대한 미들웨어 추가
//요청을 보낼 때마다 날짜를 출력한다
app.use((req, res, next) => {
  console.log(new Date());
  next();
});


//라우트 핸들러를 여러 개 작성해서 미들웨어랑 비슷하게 요청을 처리할 수 있다.
//next오브젝트를 반드시 지정해야 한다.
app.get('/multiHandler', (req, res, next) => {
  console.log('Handler1');
  next();
}, (req, res) => {
  //응답 메소드를 실행해 요청-응답 주기를 종료
  res.send("Handler2");
})
//콘솔에는 Handler1이 출력되고, response body 부분에는 Handler2가 전달된다.


// 파라미트로 주어진 값이 "admin"일 경우, 라우터 미들웨어 스택의 나머지 미들웨어 함수들을 건너뛰기
app.get('/page/:user', (req, res, next) => {
  // page/admin으로 get요청을 보낼 경우
  if(req.params.user === "admin"){
    // 제어를 다음 라우트로 전달
    next('route');
  } else {
    // page/admin이 아닌 URI로 get요청을 보낼 경우
    next();
  }
}, (req, res) => {
  res.send("general user");
})

// page/admin으로 get요청을 보낼 경우
app.get('/page/:user', (req, res) => {
  res.send("admin user");
})



app.listen(port, () => {
  console.log(`Example app listening at http://localhost:${port}`)
})

출처
https://expressjs.com/ko/guide/routing.html

0개의 댓글