[Python] Flask를 활용해서 HTTP 요청 및 응답을 처리하는 방법.

2024. 6. 19. 19:45Language/python

728x90
728x90

Flask ?

  • Python으로 작성된 경량의 웹 프레임워크.

curl ?

  • HTTP 및 HTTPS 요청을 수행할 수 있는 CLI 도구.

HTTP 거래 도식.

수행 작업.

  1. Python 설치.
  2. Flask 설치.
  3. Flask Application 코드 작성.
  4. curl 사용하여 HTTP GET/POST 요청 수행 및 응답 확인.
  5. HTTP GET/POST 요청에 대한 Flask 로그 확인.

Flask 서버 정보.

$ hostnamectl
…
  Operating System: Red Hat Enterprise Linux 8.10 (Ootpa)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:8::baseos
            Kernel: Linux 4.18.0-425.13.1.el8_7.x86_64
      Architecture: x86-64
...

Python 설치.

$ sudo yum install python3

$ python3 --version
Python 3.6.8

Flask 설치.

$ sudo pip3 install Flask

Flask Application 코드 작성.(app.py)

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/url_get', methods=['GET'])
def get_method():
    params = request.args
    print("GET Request Parameters:", params.to_dict()) 
    return jsonify(get_response_message='GET request received')

@app.route('/url_post', methods=['POST'])
def post_method():
    print("Post Request Body:", request.get_data(as_text=True))
    return jsonify(post_response_message='POST request received')

if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=28888)

Flask Application 실행.

$ python3 app.py
 * Serving Flask app 'app' (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 all addresses.
   WARNING: This is a development server. Do not use it in a production deployment.
 * Running on http://192.168.115.34:28888/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 126-899-801

curl 사용하여  HTTP GET 요청 수행 및 응답 확인.

$ curl -X GET http://192.168.115.34:28888/url_get?get=request
{
  "get_response_message": "GET request received"
}

HTTP GET 요청에 대한 Flask 로그 확인.

GET Request Parameters: {'get': 'request'}
192.168.115.33 - - [19/Jun/2024 19:21:28] "GET /url_get?get=request HTTP/1.1" 200 -

curl 사용하여  HTTP POST 요청 수행 및 응답 확인.

$ curl -X POST -H "Content-Type: application/json" -d "{'post': 'request'}" http://192.168.115.34:28888/url_post
{
  "post_response_message": "POST request received"
}

HTTP POST 요청에 대한 Flask 로그 확인.

Post Request Body: {'post': 'request'}
192.168.115.33 - - [19/Jun/2024 19:22:16] "POST /url_post HTTP/1.1" 200 -
728x90
728x90