본 어플리케이션은 flask, flask-restx, SQLAlchemy, PostgreSQL 활용하여 빠르게 REST API 서비스를 개발하기 위한 boilerplate입니다.
(Build a REST API with Flask, flask-restx, SQLAlchemy and PostgreSQL)
모든 개발 및 디버깅은 VSCode 내에서 진행되어 관련 설정 파일이 포함되어 있습니다.
Note: 다른 IDE(ex.Pycharm
) or Editor에서 개발하시는 경우,
.vscode 폴더
및flask-restx-boilerplate.code-workspace
파일 등을 삭제하시면 됩니다.
flask-bolierplate
├── .vscode/
│ ├── launch.json # vscode 실행 관련 설정
│ └── settings.json # vscode 내 format, lint, test 등 설정
├── app/ # Application root
│ ├── config/
│ │ └── config.py # DB, App envirionment
│ ├── controller/ # Route, Entry point
│ ├── database/
│ │ ├── factory.py # DB Factory(Create Schema)
│ │ └── models.py # DB Schema
│ ├── dto/ # DTO, Swagger model
│ ├── service/ # Bussiness, Data Access Logic
│ └── util/ # Utilities
│ │ ├── constants.py # 상수 정의
│ │ ├── custom_fields.py # flask_restx fields Implements
│ │ └── decorator.py # @Decorator
├── build/ # build 설정 파일(docker)
├── local/ # local test 환경 구축을 위한 docker 기반 설정(ex. postgresql)
├── scripts/ # Scripts
├── tests/ # Tests(pytest)
├── .env # python-dotenv 설정(환경변수)
├── .gitignore # git 반영 제외 설정 파일
├── .pylintrc # pylint 설정 파일
├── .python-version # 프로젝트 진입 시 바로 설정한 가상환경으로 접속 할 수 있도록 하는 설정 파일
├── flask-restx-boilerplate.code-workspace # vscode 내 workspace 설정 파일
├── Makefile # Custum CLI 생성
├── README.md
└── requirements.txt # Python package management
VSCode를 사용하는 경우 기본적인 설정에 대해서 설명합니다.
실행 모드, 환경변수 및 args 등 실행과 관련된 부분을 설정합니다.
Python Path
및 VSCode 내에서 사용할 testing
, formatting
, linting
등을 설정합니다.
Note: 처음 저장소를 clone 및 fork 시
python.pythonPath
부분을 사용자 환경에 맞게 변경해야 합니다.
Note: 사내 Python 개발 환경은
pyenv
,pyenv-virtaulenv
를 사용하고 있습니다.
또한, 모든 실행 및 빌드는Makefile
에서 작성 및 관리합니다.
개발하기 전 Python path 및 런타임 환경변수 설정이 필요합니다.
settings.json
파일 내 python.pythonPath 를 사용자 환경에 맞게 변경합니다.env
파일 내 PYTHONPATH 를 사용자 환경에 맞게 변경합니다
$ pyenv install 3.8.5
$ pyenv virtualenv 3.8.5 flask-restx-boilerplate
$ pyenv activate flask-restx-boilerplate
Note: 작업 환경(Workspace) 진입 시,
.python-version
설정으로 인하여 자동으로 가상환경이 활성화 됩니다
파이썬 모듈 설치
$ make install
flask app 실행
$ make run
test(pytest) 파일 실행
$ make tests
API 전체 목록 가져오기
$ make routes
$ make docker-build
$ make docker-run
$ make docker-stop