TIL - 05/24 Flask

Sung Jun Jin·2020년 5월 24일
1

TIL

목록 보기
19/25

Flask

Django와 비슷하게 python으로 웹 어플리케이션을 구현할 때 사용되는 매우 심플하고 가벼운 micro web framework이다. 대표적으로 Flask 프레임워크를 사용하는 어플리케이션 중에서는 PinterestLinkedIn이 있다.

Flask Git

Flask 개발환경 구축하기

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

간단한 endpoint 작성

이메일과 비밀번호가 담긴 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 해준다.

API 실행하기

터미널에서 다음 명령어를 입력해준다

$FLASK_APP=sign_up.py FLASK_DEBUG=1 flask run
  • FLASK_APP=sign_up.py : 실행시킬 endpoint 파일을 지정해준다
  • FLASK_DEBUG=1 : 1(True)로 지정해 놓으면 debug 모드가 활성화된다. 코드를 수정했을 시 자동으로 서버가 재시작되어 바로 수정된 코드가 반영된다.
(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번 포트에서 서버가 돌아가고 있다.

API 호출하기

POSTMAN에서 방금 작성한 API를 호출해보자

http://localhost:5000/sign-up

정상적으로 API가 호출된다.

profile
주니어 개발쟈🤦‍♂️

0개의 댓글