Express
Node.js 환경에서 동작하는 대표적인 웹 애플리케이션 프레임워크
HTTP 요청, 응답을 편하게 처리하고 서버를 빠르게 만들 수 있게 돕는 도구
특징
- 간결, 유연함: 최소한의 구조만 제공
- 미들웨어 기반 구조: 요청, 응답 사이 다양한 기능 추가 가능(로그, 인증, 에러처리 등)
- 라우팅 기능: URL과 HTTP 메서드에 따라 처리 로직 분리 가능
- 빠른 프로토타이핑: body-parser, cookie-parser, cors 등
기본 동작 원리
요청 -> 미들웨어 처리 -> 응답
Express는 미들웨어 스택(Middleware Stack) 구조를 기반으로 동작함
- 요청(Request)이 들어오면 등록된 미들웨어들이 순차적으로 실행됨
- 각 미들웨어는 요청을 가공하거나 조건에 따라 응답을 보내거나 다음 미들웨아로 넘김
- 인증, 로깅, 에러처리, 응답 변환 등을 유연하게 추가, 삭제할 수 있음
ex) 요청 -> 로킹 미들웨어 -> 인증 미들웨어 -> 라우팅 -> 응답 -> 종료
요청(Request), 응답(Response) 객체
- req: 클라이언트에서 보낸 데이터. URL 파라미터, 헤더, 쿠키 등에 접근 가능
- res: 클라이언ㅌ느로 응답을 보낼 수 있는 객체
- next(): 다음 미들웨어로 요청을 전달하는 함수
미들웨어 패턴
역할: 요청/응답 처리 흐름을 분리하고 재사용 가능한 기능 단위로 구성
종류
- 애플리케이션 레벨 미들웨어 -> app.use(), app.get()
- 라우터 레벨 미들웨어 -> router.use()
- 에러처리 미들웨어 -> (err, req, res, next) 형식
- 서드파티 미들웨어 -> cors, helmet, morgan 등
Express vs others
- Express: 자유도 높음, 직접 구조 설계
- NestJS: 구조, 규칙 정해짐(대규모 프로젝트에 적합)
- Koa: Express 후속. 더 미니멀함