Home Middleware에 대해 알아보자
Post
Cancel

Middleware에 대해 알아보자

Middleware

Express.js 동작의 핵심인 미들웨어는 Http 요청과 응답 사이에서 단계별 동작을 수행해주는 함수이다.

middleware의 동작 원리

Express.js의 미들웨어는 HTTP 요청이 들어온 순간부터 시작된다. 미들웨어는 HTTP 요청과 응답 객체를 처리하거나, 다음 미들웨어를 실행할 수 있다.

middleware 작성법

request, response, next를 가진 함수를 구현해서 미들웨어로 동작하게 할 수 있다.

  • req: HTTP요청을 처리하는 객체
  • res: HTTP응답을 처리하는 객체
  • next: 다음 미들웨어를 실행하는 함수

Router handler와 middleware

Route Handler도 미들웨어 중 하나이다. Route Handler는 라우팅 함수(get, post, put, delete)에 적용된 미들웨어이다. path parameter를 사용할 수 있다.

미들웨어는 적용되는 위치에 따라서 어플리케이션 미들웨어, 라우터 미들웨어, 오류처리 미들웨어로 분류할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
const auth = (req, res, next) => {
  if (!isAdmin(req)) {
    res.send("not auth");
  }
  next();
};

app.get("/", (req, res, next) => {
  res.send("admin");
});

app.use("/admin", auth, adminRouter);

usehttp method를 사용해서 미들웨어를 연결할 수 있다. 미들웨어의 동작이 완료되면 next()를 통해 다음 동작으로 넘어갈 수 있다.

오류처리 미들웨어

오류 처리 미들웨어는 가장 마지막에 존재하는 미들웨어로 네 가지의 인자를 가지게 된다. err, req, res, next를 가진다.

1
2
3
4
5
6
7
8
9
10
11
app.use((req, res, next) => {
  if (!isAdmin(req)) {
    next(new Error("not auth"));
    return;
  }
  next();
});

app.use((err, req, res, next) => {
  res.send("err occur");
});

에러가 발생하게 되면 next()에 에러를 넘기게 되고 오류처리 미들웨어가 바로 실행된다.

함수형 미들웨어

1
2
3
4
5
6
7
8
9
10
11
12
13
const funcMiddleware = (types) => {
  return (req, res, next) => {
    if (!isCorrect(req, types)) {
      next(new Error("error occur"));
      return;
    }
    next();
  };
};

app.use("/check", funcMiddleware("type1"), nextRouter);

app.use("/check", funcMiddleware("type2"), type2Router);

위 코드는 미들웨어를 함수형으로 작성한 것이다. funcMiddleware가 실행될 경우 미들웨어의 동작이 결정되는 방식이다. 로직은 동일하지만 설정 값을 다르게 하고 싶을 경우 사용하게 된다.

This post is licensed under CC BY 4.0 by the author.

Node js 프로젝트 시작하기 (npm과 모듈 사용하기)

다이나믹 프로그래밍 (이것이 취업을 위한 코딩 테스트다)