Node와 Express 구조

Node.js와 Express HTTP 구조

Node.js는 브라우저 밖에서 JavaScript를 실행하는 런타임이고, Express는 HTTP 요청을 라우트와 미들웨어 체인으로 처리하는 프레임워크입니다. 핵심은 한 요청이 어떤 미들웨어를 거쳐 응답으로 끝나는지 읽는 것입니다.

01

런타임 이해

Node는 단일 스레드 이벤트 루프와 비동기 I/O로 많은 대기 작업을 효율적으로 다룹니다.

runtime
02

미들웨어 체인

app.use와 route handler는 등록 순서대로 실행되며 req, res, next를 통해 흐름을 넘깁니다.

처리 흐름
03

라우팅과 응답

HTTP method와 path가 맞는 handler에서 요청 값을 읽고 상태 코드와 body를 명확히 보냅니다.

route
04

오류 처리

비동기 handler의 오류를 next나 wrapper로 error middleware에 전달해야 요청이 멈추지 않습니다.

error
Middleware
공통 처리를 route 앞뒤에 배치 JSON 파싱, 인증, 로깅, rate limit처럼 반복되는 관문입니다.
chain
Router
도메인별 route 묶음 users, posts처럼 URL 책임을 나누면 app 진입점이 가벼워집니다.
module
Async error
await 중 실패를 중앙 오류 처리로 보냄 try/catch 누락은 요청 hanging이나 unhandled rejection으로 이어질 수 있습니다.
failure

등록 순서 · 응답 종료 · 환경 변수 점검

등록 순서 인증 미들웨어가 route 뒤에 등록되면 보호가 적용되지 않습니다.
응답 종료 res.json 뒤에 다음 응답이 실행되지 않도록 return 흐름을 확인합니다.
환경 변수 포트, DB URL, secret은 코드가 아니라 실행 환경에서 주입합니다.

중앙 오류 처리

app.get('/users/:id', asyncHandler(async (req, res) => {
  const user = await loadUser(req.params.id);
  res.json(user);
        overflow-wrap: break-word;
        word-break: keep-all;
      }));

app.use((err, req, res, next) => {
  res.status(500).json({ message: 'server error' });
});