my_fastapi_project/
├── app/
│ ├── api/ # API 엔드포인트(라우터) 정의
│ │ ├── v1/ # API 버전 관리 (선택 사항)
│ │ │ ├── endpoints/
│ │ │ │ ├── user.py
│ │ │ │ └── item.py
│ │ │ └── init.py
│ │ └── init.py
│ ├── core/ # 핵심 설정 및 유틸리티
│ │ ├── config.py # 환경 변수 및 설정 관리 (Pydantic Settings)
│ │ └── dependencies.py # 공통 의존성 주입 함수 (DB 세션 등)
│ ├── db/ # 데이터베이스 관련 로직
│ │ ├── database.py # DB 연결 및 세션 관리
│ │ └── crud.py # DB 접근 로직 (Create, Read, Update, Delete)
│ ├── models/ # 데이터베이스 모델 (SQLAlchemy, SQLModel 등)
│ │ ├── user.py
│ │ └── item.py
│ ├── schemas/ # Pydantic 모델/스키마 (입력/출력 데이터 유효성 검사 및 직렬화)
│ │ ├── user.py
│ │ └── item.py
│ ├── main.py # FastAPI 애플리케이션 진입점 (FastAPI 인스턴스 생성 및 라우터 포함)
│ └── services/ # 비즈니스 로직 (CRUD를 호출하고 데이터를 처리하는 서비스 계층)
├── tests/ # 테스트 파일
├── .env # 환경 변수 파일
├── requirements.txt # 패키지 목록
└── README.md
주요 모듈별 역할 및 기능
| 모듈/폴더 | 역할 | 상세 설명 |
|---|---|---|
| main.py | 진입점 | FastAPI() 인스턴스를 생성하고, APIRouter를 사용하여 다른 파일에 정의된 라우터를 포함(include_router())합니다. |
| api/ (Router) | 라우팅 | fastapi.APIRouter를 사용하여 실제 API 엔드포인트(@router.get, @router.post 등)를 정의합니다. URL 경로와 HTTP 메서드를 처리합니다. |
| schemas/ | 데이터 유효성 검사 | 요청 본문(Request Body)과 응답(Response)에 사용되는 Pydantic 모델을 정의합니다. 데이터 형태를 명확히 하고 자동 문서화를 지원합니다. |
| models/ | 데이터베이스 모델 | 데이터베이스 테이블 구조를 정의합니다 (예: SQLAlchemy의 ORM 모델). |
| db/ (CRUD) | 데이터베이스 접근 | CRUD (Create, Read, Update, Delete) 작업을 수행하는 함수를 정의하여, 데이터베이스와의 상호작용 로직을 분리합니다. |
| services/ | 비즈니스 로직 | 애플리케이션의 핵심 비즈니스 규칙을 구현합니다. db/crud를 호출하고, 여러 데이터 작업을 조합하거나 외부 시스템과 통신하는 등 복잡한 로직을 처리합니다. |