(python) flask 3. Post 요청 처리

2019-09-12

지난 시간에 이어 Flask로 Post 요청을 처리하는 방법에 대해 알아보겠습니다.


지금까지 공부한 것


client로부터 post parameter를 전달받고, 전달받은 parameter를 출력하는 예제를 만들어 볼 것입니다.

post parameter는 body로부터 넘어오는 paramter입니다.

1. app 생성

flask app을 생성하고, root page 요청에 대한 handler를 생성합니다.

# _*_ coding: utf-8 _*_

from flask import Flask

app = Flask(__name__)

@app.route('/')
def root():
    return 'welcome to flask'

2. post 요청을 날릴 page 생성

특정 page(send_post)에 접속하면, post 요청으 처리하는 page(handle_post)에 post 요청을 날려 테스트 해보겠습니다.

2.1. send_post 요청 처리

send_post 접속 시 requests모듈을 이용하여 handle_post page에 post요청을 합니다.

handle_post로부터 전달받은 결과를 return 합니다.

import requests

@app.route('/send_post', methods=['GET'])
def send_post():
    params = {
        "param1": "test1",
        "param2": 123,
        "param3": "한글"
    }
    res = requests.post("http://127.0.0.1:5000/handle_post", data=json.dumps(params))
    return res.text

2.2. handle_post 요청 처리

post 요청을 처리할 handle_post 도 만듭니다.

post 요청을 처리하기 위해 app.route 인자로 methods=[‘POST’]를 넣어야 합니다.

전달받은 data를 json.loads를 이용해 dictionary 형태로 변환하여 파싱하였습니다.

@app.route('/handle_post', methods=['POST'])
def handle_post():
    params = json.loads(request.get_data(), encoding='utf-8')
    if len(params) == 0:
        return 'No parameter'

    params_str = ''
    for key in params.keys():
        params_str += 'key: {}, value: {}<br>'.format(key, params[key])
    return params_str

3. app 실행

전달한 parameter들이 잘 파싱되는 것을 볼 수 있습니다.

screenshot

4. 코드

전체 코드는 https://github.com/apt-info/samples/ 에서 확인하실 수 있습니다.