미들웨어
- Express.js 동작의 핵심
- HTTP 요청과 응답 사이에서 단계별 동작을 수행해주는 함수
- Express.js의 미들웨어는 HTTP 요청이 들어온 순간부터 시작됨
- 미들웨어는 HTTP요청과 응답 객체를 처리하거나, 다음 미들웨어를 실행할 수 있음
- HTTP 응답이 마무리 될 때 까지 미들웨어 동작 사이클이 실행 됨
- 마무리 되면 다음 미들웨어가 실행되지 않는다!
미들웨어 작성법
- req - HTTP 요청을 처리하는 객체
- res - HTTP 응답을 처리하는 객체
- next - 다음 미들웨어를 실행하는 함수
Router Handler
- Router Handler도 미들웨어의 한 종류
- 라우팅 함수(get, post, put, delete)에 적용된 미들웨어
- 일반적인 미들웨어와는 다르게 path parameter를 사용할 수 있음
작성법!!
- req, res, next를 인자로 갖는 함수를 작성하면 미들웨어가 됨
- req, res 객체를 통해 HTTP 요청과 응답을 처리하거나 next 함수를 통해 다음 미들웨어를 호출해야 함
- next() 함수가 호출되지 않으면 미들웨어 사이클이 멈추기 때문에 주의
사용법
- middleware 는 적용되는 위치에 따라서 어플리케이션 미들웨어, 라우터 미들웨어, 오류처리 미들웨어로 분류 가능
어플리케이션 미들웨어
- use 나 http method 함수를 사용하여 미들웨어를 연결할 수 있음
- 미들웨어를 모든 요청에 공통적으로 적용하기 위한 방법
- HTTP 요청이 들어온 순간부터 적용된 순서대로 동작 함
라우터 미들웨어
- router 객체에 미들웨어가 적용되는 것 외에는 어플리케이션 미들웨어와 사용 방법은 동일
- 특정 경로의 라우팅에만 미들웨어를 적용하기 위한 방법
- app 객체에 라우터가 적용된 이후로 순서대로 동작함
미들웨어 서브 스택
- use 나 http method 함수에 여러 개의 미들웨어를 동시에 적용할 수 있음
- 주로 한 개의 경로에 특정해서 미들웨어를 적용하기 위해 사용
- 전달된 인자의 순서 순으로 동작
오류처리 미들웨어
- 오류처리 미들웨어는 일반적으로 가장 마지막에 위치하는 미들웨어
- 다른 미들웨어들과는 달리 err, req, res, next 네 가지 인자를 가지며, 앞선 미들웨어에서 next 함수에 인자가 전달되면 실행됨
함수형 미들웨어
- 하나의 미들웨어를 작성하고, 작동 모드를 선택하면서 사용하고 싶을 경우
- 미들웨어를 함수형으로 작성하여 사용할 수 있음
출처 : 엘리스 아카데미