한 요청의 운명은 등록 순서와 종료 지점이 정한다

Node.js가 HTTP 연결을 받아 이벤트 루프에서 I/O를 조율하면, Express는 등록된 미들웨어와 라우트를 위에서 아래로 탐색합니다.

01

Client

메서드·경로·본문을 담아 요청

GET /users
02

Node HTTP

연결 수신, 비동기 I/O 대기 조율

listen(port)
03

Middleware

등록 순서대로 검사·변환·기록

next()
04

Router

HTTP method와 path가 모두 맞는지 판별

app.get()
05

Handler

상태와 본문을 보내 요청 종료

res.json()
계속next() 호출

다음 미들웨어나 라우트로 제어를 넘깁니다.

종료res.* 호출

응답을 보낸 뒤 같은 요청에서 다시 보내지 않습니다.

우회불일치·오류

마지막 404 또는 error middleware가 맡도록 뒤에 둡니다.

요청이 멈췄다면 해당 관문이 next()도 응답도 실행하지 않았는지, 응답을 두 번 보내는 경로가 있는지부터 확인합니다.