My Boundary As Much As I Experienced

express에 미들웨어 설정하기 본문

BackEnd/Node.js

express에 미들웨어 설정하기

Bumang 2024. 8. 23. 02:25

미들웨어란?

미들웨어(Middleware)는 Express.js와 같은 웹 애플리케이션 프레임워크에서

HTTP 요청(Request)응답(Response) 사이에 실행되는 함수이다.

미들웨어는 요청 객체, 응답 객체, 그리고 다음 미들웨어 함수를 제어할 수 있다.

 

할 수 있는 것:

  1. 요청 처리: 요청을 분석하고 필요한 데이터를 추가하거나, 요청을 변경할 수 있다.
  2. 응답 처리: 응답을 생성하거나 수정할 수 있다.
  3. 요청 흐름 제어: 특정 조건에 따라 다음 미들웨어로 요청을 전달하거나, 요청 처리를 종료하고 응답을 보낼 수 있다.
  4. 공통 기능 처리: 인증, 로깅, 에러 처리, 정적 파일 제공 등의 기능을 공통으로 처리하는 데 자주 사용된다.

미들웨어는 app.use() 또는 특정 라우트에 연결하여 사용되며,

여러 개의 미들웨어를 배열로 묶어 순차적으로 연결하여 사용할 수 있다.

 

사용법 1. app.use(...)

예시: 로그인이나 회원가입 시 유저가 아이디 혹은 비번을 빈칸으로 제출 시 에러처리

route도 배열로 묶어서 여러 경로에 적용할 수 있는 것도 주의할만하다.

next를 꼭 실행시켜줘야 다음 라우트를 찾아간다는 것을 유념해야된다.

app.use(["/login", "/signup"], (req, res, next) => {
  console.log(req, "middleware login");
  if (req.body.username === "" || req.body.password === "") {
    res.status(401).json({ error: "빈칸 안 돼" });
  } else {
    next();
  }
});

 

 

사용법 2. 가운데 넣기 : app.get("/login", middleWare ,( req, res )=> { ... })

예시: 라우트와 콜백 사이에 미들웨어를 넣어서 사용할수도 있다.

정말 미들웨어같은 위치가 아닐 수 없다. pathname과 콜백 사이..

app.get("/login", middleWare ,( req, res )=> { ... })

 

 물론 여기서도 화살표 함수 형태로 콜백함수를 넣어줘도 된다.

app.get("/login", (req, res, next) => {
  ...
  next()
}, (req, res) => {
  ...
})