주요 개념

개념 설명
**미들웨어
(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                # 환경 변수 설정 파일