Middleware는 Node.js에서 요청과 응답(Response) 사이에 위치하여, 요청을 가로채거나 처리하는중간 단계 함수
우리는 왜 Middleware를 사용할까?
- 반복 줄이기: 모든 요청에서 공통적으로 해야 할 작업을 한 곳에 작성.
- 코드 분리: 요청 처리 로직을 컨트롤러와 분리하여 가독성 및 유지보수성 향상.
- 유연성: 필요에 따라 여러 미들웨어를 체인처럼 연결해 다양한 작업을 처리.
주의할 점
- 미들웨어의 순서!!! ( 완전중요 별 다섯개 )
- app.use로 등록된 미들웨어는 작성된 순서대로 실행된다.
- 요청 처리 흐름에 영향을 줄 수 있으니 순서를 신중히 배치해야한다.
- 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 |