fastapi structure

이우철·2025년 10월 24일

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를 호출하고, 여러 데이터 작업을 조합하거나 외부 시스템과 통신하는 등 복잡한 로직을 처리합니다.
profile
개발 정리 공간 - 업무일때도 있고, 공부일때도 있고...

0개의 댓글