백엔드 Back-end/패스트API FastAPI

FastAPI 디렉터리 구조를 어떻게 하는 게 좋을까?

Tap to restart 2022. 2. 22. 21:00

프로젝트명으로 저장소를 만들고 클론을 떠서 로컬에서 개발을 시작하고 나면, 디렉터리 구조부터가 고민이 되기 시작한다.

django나 nestjs 등의 경우 CLI 명령어를 치면 자동으로 쭉 디렉터리와 기본 파일들을 만들어준다. 그런 경우 고민이 덜하다. 그 틀에 맞춰서 따라가면 되니까. 하지만 FastAPI의 경우 아직 그런 기능이 없는 거 같다.

 

PyCharm을 쓰고 있어서 새 프로젝트 만들기를 누르고 FastAPI를 선택했지만 별 거 없다. 그냥 main.py와 test_main.http 파일 두 개와 venv 디렉터리만 생기고 끝이다.

 

 

FastAPI로 개발할 때 과연 어떤 디렉터리 구조가 좋을까? FastAPI 개발자인 Sebastián Ramírez(tiangolo)의 예제 프로젝트가 있다. full-stack-fastapi-postgresql이란 프로젝트다.

 

해당 프로젝트에서 백엔드 부분을 살펴보면 아래와 같다.

 

디렉터리 구조(출처: https://github.com/tiangolo/full-stack-fastapi-postgresql)

 

- api : 엔드포인트별로 파일 구분

    - api_v1

        - endpoints: items.py, login.py, users.py, utils.py

- core: 공통 파일 config.py, security.py, celery_app.py

- crud: 기본 get, create, update, remove base.py, crud_item.py, crud_user.py

- db: 데이터베이스 관련 파일 base.py, base_class.py, init_db.py, session.py

- models: 데이터베이스 테이블과 매칭되는 모델 item.py, user.py

- schemas: 스프링의 DTO와 비슷 item.py, user.py, msg.py, token.py

- tests: 테스트 파일

 

위와 같이 구성되어 있다.