Middleware

Haechan Kim·2022년 2월 2일

Node.js

목록 보기
8/15

  • Middleware
    client와 server 양쪽을 연결하여 데이터를 주고 받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어.

client에서 request를 보내게되면 서버에 있는 미들웨어들 하나하나를 순차적으로 동작.
최종 미들웨어에서 response를 client에게 전달.

Express는 일련의 미들웨어 함수 호출.

미들웨어에는 5가지 종류가 존재.

  1. Application-level
    use , method(get, post, put, delete 등) 메서드로 미들웨어 등록.
    미들웨어는 함수로 만들어서 use에 파라미터로 전달.

app.use('/abc', 미들웨어) == abc로 시작하는 요청에서 미들웨어 실행
app.post('/abc', 미들웨어) == abc로 시작하는 POST 요청에서 미들웨어 실행

app.get('/user/:id', (req, res, next) => {
   res.send('hello');
})
  • 주소에 :id가 있는데 문자 그대로 :id를 의미하는 것이 아니다.
    이 부분에는 다른 값 넣을 수 있는데 /users/1이나 /users/123등의 요청도 이 라우터가 처리
    이 방식의 장점은 :id에 해당하는 1,123 조회할 수 있다는 점이며 req.params 객체 안에 들어있다.
    :id면 req.params.id로, :type이면 req.params.type로 조회할 수 있다.

첫 파라미터로 해당 경로에서만 미들웨어가 동작하도록 지정 가능.
생략하면 모든 경로에서 미들웨어가 동작.

app.use('/user/:id', (req, res, next) => {
    console.log();
    next(); // 다음 미들웨어 실행
})

미들웨어의 인자는 3개(요청, 응답, 다음 미들에어 호출 콜백).
미들웨어는 한 개 이상 등록 가능.

app.use('/user/:id', (req, res, next) => {
    console.log();
    next(); // 다음 미들웨어 실행
}, (req, res, next) => {
    console.log();
    next();
})
  1. Router-level

  2. Error-handling
    4개의 인수 사용(err, req, res, next). 하나라도 생략되면 일반 미들웨어로 인식됨.

app.use((err, req, res, next) => {
    console.error(err);
    res.status(500).send(err.message);
})
  1. Built-in
    내장 미들웨어

  2. Third-party

0개의 댓글