본문 바로가기
개발공부/Node.js

[node.js] middleware

by zing! 2025. 1. 3.

Middleware는 Node.js에서 요청과 응답(Response) 사이에 위치하여, 요청을 가로채거나 처리하는중간 단계 함수

우리는 왜 Middleware를 사용할까?

  • 반복 줄이기: 모든 요청에서 공통적으로 해야 할 작업을 한 곳에 작성.
  • 코드 분리: 요청 처리 로직을 컨트롤러와 분리하여 가독성 및 유지보수성 향상.
  • 유연성: 필요에 따라 여러 미들웨어를 체인처럼 연결해 다양한 작업을 처리.

주의할 점

  1. 미들웨어의 순서!!! ( 완전중요 별 다섯개 )
    • app.use로 등록된 미들웨어는 작성된 순서대로 실행된다.
    • 요청 처리 흐름에 영향을 줄 수 있으니 순서를 신중히 배치해야한다.
  2. next()를 호출하지 않으면 요청이 멈춤
    • 미들웨어에서 next( )를 호출하지 않으면, 다음 단계로 넘어가지 않고 요청 처리가 멈춘다

next (다음 미들웨어로 제어 전달)

미들웨어에서 next() 호출 : 다음 미들웨어 함수를 실행 (next()를 호출하지 않으면 요청이 멈추고 응답을 받지 않는다)

app.use( )

  • 미들웨어를 애플리케이션에 추가
  • 등록된 미들웨어는 요청-응답 주기에서 실행
  • 경로를 지정하지 않으면, 글로벌하게 작동시킬수있다.
const globalMiddleware = (req,res,next) => {
     console.log("모든 요청에서 실행된다");
     next();
}

app.use(globalMiddleware);
  • 특정 경로에서만 실행되도록 설정 가능하다.
const speMiddleware = (req,res,next) => {
	console.log("특정 경로에서만 실행된다");
    next();
}

app.use("/",speMiddleware);

미들웨어에서 요청의 흐름을 종료시키는 방법

  • res.send() :응답을 보내 다음 미들웨어나 라우터를 실행시키지 않는다.
  • res.json() 
  • res.end() : 데이터 없이 응답을 종료할 때 사용
  • next() 호출 없이 종료 : 다 음 미들웨어로 제어를 넘기지 않으면, 요청이 종료

미들웨어에서 요청 흐름을 종료하려면 res.send(), res.json(), res.end() 등을 사용하여 응답을 보내면 된다.

응답을 보낸 후에는 더 이상 다음 미들웨어가 실행되지 않고, 요청 처리가 종료된다.

next()를 호출하지 않으면 다음 미들웨어가 실행되지 않으며, 요청이 종료된 상태로 응답을 반환하게 된다.

 

▶ middleware - morgan 사용하는 방법

 

'개발공부 > Node.js' 카테고리의 다른 글

package.json이 왜 중요할까?  (1) 2025.01.22
왓 더 PUG  (0) 2025.01.11
module (import,export)  (0) 2025.01.09
[Node.js] middleware - morgan  (0) 2025.01.03
Node. js  (0) 2025.01.01