Django와 비슷하게 python으로 웹 어플리케이션을 구현할 때 사용되는 매우 심플하고 가벼운 micro web framework이다. 대표적으로 Flask 프레임워크를 사용하는 어플리케이션 중에서는 Pinterest와 LinkedIn이 있다.
1. 파이썬 가상환경 구축
$ conda create -n flask_test python=3.8
Downloading and Extracting Packages
python-3.8.3 | 49.1 MB | ######################################################### | 100%
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
# $ conda activate flask_test
#
# To deactivate an active environment, use
#
# $ conda deactivate
2. 가상환경 실행
$ conda activate flask_test
3. flask 설치
$ pip install flask
4. 적절한 위치에 프로젝트 폴더 생성
$ mkdir flask_test
이메일과 비밀번호가 담긴 request를 그대로 return 해주는 간단한 endpoint를 작성해보자.
프로젝트 폴더를 생성한 위치에서 파이썬 파일을 생성해준다
vim sign_up.py
sign_up.py
from flask import Flask, request, jsonify
app = Flask(__name__)
app.route('/sign-up', methods = ['POST']
def sign_up():
user = request.body
response = {
'email' : user['email'],
'password' : user['password']
}
return jsonify(response), 200
하나하나 살펴보자
from flask import Flask, jsonify, request
필요한 flask 모듈들을 import 해준다.
Flask : 말 그대로 Flask 클래스를 import 해준다.
request : http request의 json 데이터를 읽어 들이는 module이다
jsonify : python의 dictionary를 json으로 변환시켜 http response로 보내는 역할을 하는 module이다.
app = Flask(__name__)
import한 Flask 클래스를 객체화 시켜서 app이라는 변수에 저장한다. 이 app 변수가 바로 API 애플리케이션이다.
@app.route('/sign-up', methods = ['POST']
Flask는 route 데코레이터를 활용해 엔드포인트를 등록한다. 엔드포인트의 url과 HTTP METHOD를 정의해준다.
user = request.body
response = {
'email' : user['email'],
'password' : user['password']
}
return jsonify(response), 200
request의 body에서 사용자의 'email'과 'password'를 그대로 가져와 response dictionary에 옮겨줬다. 마지막으로 reponse 딕셔너리를 jsonify 메소드를 통해 json으로 변환시켜준뒤 200 status code와 함께 return 해준다.
터미널에서 다음 명령어를 입력해준다
$FLASK_APP=sign_up.py FLASK_DEBUG=1 flask run
(flask_test) sungjunjin@sungjunjin ~/devel/flask_test FLASK_APP=sign_up.py FLASK_DEBUG=1 flask run
* Serving Flask app "sign_up.py" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: on
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
* Restarting with stat
* Debugger is active!
* Debugger PIN: 175-230-420
장고와는 다르게 5000번 포트에서 서버가 돌아가고 있다.
POSTMAN에서 방금 작성한 API를 호출해보자
http://localhost:5000/sign-up
정상적으로 API가 호출된다.