don't stop believing

Flask로 API 서버 만들기 (1) - 개발 환경 준비 본문

Python/Flask

Flask로 API 서버 만들기 (1) - 개발 환경 준비

Tongchun 2018. 11. 6. 20:19

API 테스트에 사용할 대상 서버를 Flask로 만들어 보기로 했습니다.

API 테스트 교육할때 마다 API 서버를 찾아 다녔는데 이번에 만들어 놓으면 좋을 것 같습니다.


찾아보니 좋은 글이 있어서 이걸 참고하기로 합니다.

How to structure a Flask-RESTPlus web service for production builds


자세한 사항은 링크를 확인해 주세요.

저는 쭉쭉 나가겠습니다.

위 글에대한 source는 아래 링크에서 다운받을 수 있습니다.

https://github.com/cosmic-byte/flask-restplus-boilerplate


이제 시작해 보겠습니다.

먼저 Ubuntu에 접속해 버전들을 확인해 보겠습니다.

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 18.04.1 LTS
Release:	18.04
Codename:	bionic

Python 버전도 확인해 봅니다.

$ python3 -V
Python 3.6.6

pip도 설치했으니 pip 버전도 확인해 봅니다.

$ pip3 -V
pip 9.0.1 from /usr/lib/python3/dist-packages (python 3.6)

python3와 pip3를 그냥 python과 pip 사용할 수 있도록 ~/.bashrc에 alias를 추가합니다.

$ sudo vim ~/.bashrc

~/.bashrc 파일의 제일 마지막 부분에 아래와 같이 추가합니다.

# Python
alias python=python3
alias pip=pip3

그 다음 변경된 설정을 등록합니다.

$ source ~/.bashrc

python -V로 Python 3.6.6이 나오는지 확인하면 됩니다.


먼저 가상환경 구성을 설정합니다.

virtual environment wrapper를 설치하고 설정을 수정합니다.

$ sudo pip install virtualenvwrapper

그리고 python3와 virtualenvwrapper.sh가 어디있는지 확인해 봅니다.

$ which python3
/usr/bin/python3
$ sudo find / -name virtualenvwrapper.sh
/home/ngle/.local/bin/virtualenvwrapper.sh

.bashrc를 열고 아래와 같이 설정을 추가합니다.

$ sudo vim ~/.bashrc

파일 아래쪽에 아래와 같이 추가합니다.

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/Devel
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
export VIRTUALENVWRAPPER_VIRTUALENV=/usr/local/bin/virtualenv
source ~/.local/bin/virtualenvwrapper.sh

이제 Directory 구조를 잡아줍니다.

아래와 같이 잡아줍니다.

$ mkdir -p ./nGleAPI/app/main/controller
$ mkdir -p ./nGleAPI/app/main/model
$ mkdir -p ./nGleAPI/app/main/service
$ mkdir -p ./nGleAPI/app/test

각 directory 안에 __init__.py 파일도 만들어 줍니다.

touch ./nGleAPI/app/__init__.py
touch ./nGleAPI/app/main/__init__.py
touch ./nGleAPI/app/main/controller/__init__.py
touch ./nGleAPI/app/main/model/__init__.py
touch ./nGleAPI/app/main/service/__init__.py
touch ./nGleAPI/app/test/__init__.py
touch ./nGleAPI/requirements.txt

Directory를 확인해 봅니다.

$ cd nGleAPI/
$ tree
.
├── app
│   ├── __init__.py
│   ├── main
│   │   ├── controller
│   │   │   └── __init__.py
│   │   ├── __init__.py
│   │   ├── model
│   │   │   └── __init__.py
│   │   └── service
│   │       └── __init__.py
│   └── test
│       └── __init__.py
└── requirements.txt

API 서버를 만들기 위해 필요한 Package들도 설치해 줍니다.

$ sudo pip install flask-bcrypt
$ sudo pip install flask-restplus
$ sudo pip install Flask-Migrate
$ sudo pip install pyjwt
$ sudo pip install Flask-Script
$ sudo pip install flask_testing

package들이 설치되었다면 requirements.txt에 현재 개발 환경에 대한 사항을 기록합니다.

pip freeze 명령은 현재 pip을 이용해 설치된 package 정보들을 보여 줍니다. 이걸 바로 requirements.txt에 기록합니다.

$ pip freeze > requirements.txt


여기까지 개발 준비였습니다.

다음 Post에 Flask를 이용한 API 서버 개발을 시작해 봅시다.


Developing API Sample Server by Flask 

Original Post: How to structure a Flask-RESTPlus web service for production builds

Github: https://github.com/cosmic-byte/flask-restplus-boilerplate


Flask로 API 서버 만들기 (1) - 개발 환경 준비

Flask로 API 서버 만들기 (2) - config 와 실행 확인

Flask로 API 서버 만들기 (3) - User 테이블 만들기

Flask로 API 서버 만들기 (4) - Testing

Flask로 API 서버 만들기 (5) - User Operations

Flask로 API 서버 만들기 (6) - Security and Authentication

Flask로 API 서버 만들기 (7) - Route protection and Authorization

Flask로 API 서버 만들기 (8) - Extra tips (Makefiles)


Comments