더 좋은 블로그 글 : https://velog.io/@dami/Express-%EC%84%9C%EB%B2%84%EC%97%90%EC%84%9C-JSON-%ED%98%95%ED%83%9C%EB%A1%9C-%EC%9D%91%EB%8B%B5%ED%95%98%EA%B8%B0
미들웨어 함수(Middleware function)는 request object (req), response object (res), next 함수를 이용해 앱의 요청과 응답을 순환합니다. Express안에서 Next함수가 호출되면 다음 미들웨어로 전달되어 수행합니다.
미들웨어 함수는 다음과 같은 작업을 합니다.
- 사용자 코드를 실행시킨다. (옵저버 디자인 패턴)
- 요청 및 응답을 바꾼다.
- 요청-응답의 순환을 종료한다. (response)
- 스택(stack)의 다음 미들웨어를 next로 호출한다.
만약에 미들웨어가 요청에 응답을 하지 않는다면 자동으로 next() 함수로 다음 미들웨어에 제어를 전달합니다. 하지만 다음 미들웨어가 없다면 그 Request 는 응답받지 못하고 보류될 것 입니다.
다음 사진은 미들웨어 함수를 호출하는 인자들을 설명한다.
- 미들웨어 함수에 적용할 HTTP 메소드
- 미들웨어 함수에 적용할 경로(Path, router)
- 미들웨어 함수
- 다음 미들웨어 콜백 인수, next를 사용
- http 응답 인자, res를 사용
- http 요청 인자, req를 사용
Express5 부터는 요청이 거절되거난 오류(Error)가 생기면 미들웨어 함수느 Next(value)를 호출하는 Promise 객체를 리턴할 것입니다. next함수의 value 인자는 에러코드 또는 거부 코드이다.