Express 요청은 등록 순서의 미들웨어 스택을 통과한다
각 단계는 next(), 응답 전송, next(err) 중 하나로 흐름을 결정하고 응답은 한 요청에서 한 번만 끝나야 한다.
| 흐름 | 하는 일 | 다음 방향 | 주의점 |
|---|---|---|---|
| Request | req, res가 Express 앱으로 들어옴 | 첫 middleware로 이동 | 공통 상태는 같은 요청 안에서만 유지 |
| app.use() | 로그, CORS, JSON 파서, 인증 처리 | next() 또는 response | 등록 순서가 결과를 바꿈 |
| Router | method와 path가 맞는 레이어 선택 | handler 실행 | 매칭 실패 시 404 fallback |
| Handler | 비즈니스 로직과 응답 생성 | res.json(), res.send() | 응답 후 다시 next를 부르면 위험 |
| Error | next(err)가 오류 핸들러로 점프 | 4개 인자 middleware | 일반 흐름과 오류 흐름을 분리 |
Express 앱은 하나의 큰 함수처럼 동작하므로 등록 순서와 응답 종료 지점이 핵심이다.