- Node.js 환경에서 사용하는 웹 어플리케이션 프레임워크
- 간결하고 유연한 구조 제공
- http 모듈을 이용, 쉽고 빠르게 웹 서버 구축
- RESTful API 구축에 자주 사용
- 미들웨어를 이용하여 요청과 응답 사이에 여러 처리를 연결 가능
주요 개념
| 개념 |
설명 |
| **미들웨어 |
|
| (Middleware)** |
요청(Request)이 라우터에 도달하기 전후에 실행되는 공통 작업 함수. |
| **라우팅 |
|
| (Routing)** |
클라이언트의 **URL(주소)**과 **메서드(GET, POST 등)**에 따라 적절한 함수를 연결하는 '길 찾기' 과정 자체. |
| **Request |
|
| (요청 객체)** |
클라이언트가 보낸 모든 정보가 담겨있는 객체. (서버가 받는 것) |
| **Response |
|
| (응답 객체)** |
서버가 클라이언트에게 응답을 보낼 때 사용하는 객체. (서버가 보내는 것) |
장단점
- 장점
- 다른 프레임워크에 비하여 러닝커브가 낮음
- 다양한 미들웨어, 라이브러리로 기능 확장 가능
- 쉽고 빠른 서비스 구축
- 단점
- 프레임워크 자체가 기본적으로 제공하는 기능이 적음
- 대규모 프로젝트에는 적합하지 않음
- 비동기 에러 처리가 복잡해질 가능성
구조 예시
server/ # Express
├── app/ # Express 실행 관련 로직
│ ├── controllers/ # 컨트롤러 레이어 (유효성 검사 & Request·Response 시 데이터 가공 처리 & 비지니스 로직으로의 연결)
│ ├── middlewares/ # 미들웨어 (JWT 인증, 권한 체크, 에러 핸들링, 로깅 등)
│ ├── models/ # 모델 (Sequelize 등 모델)
│ ├── repositories/ # DB 접근 레이어
│ ├── services/ # 비즈니스 로직 레이어
│ └── utils/ # 유틸
├── configs/ # 전역 설정 파일 (DB, JWT, OAuth, Push 등)
├── database/ # 데이터베이스 관련
│ ├── migrations/ # 마이그레이션 (DB 스키마 작성 파일 등)
│ └── seeders/ # 시더 (DB 더미 데이터 생성 파일 등)
├── routes/ # API 엔드포인트 정의
├── storage/ # 정적 파일을 서빙 디렉토리 (업로드 파일, PWA build 결과물 저장소), 주의: 운영환경은 경로 다름
├── app.js # API 엔트리 포인트
└── .env # 환경 변수 설정 파일