본문 바로가기
Programming

Flask : Python으로 웹서버를 만들기 위한 마이크로 프레임워크

by 디자이너 슈 2025. 2. 18.

Flask는 Python으로 웹 서버를 만들기 위한 마이크로 프레임워크입니다.

- 관련글 -> 마이크로 프레임워크 Vs 풀스택 프레임워크

 


1. from flask import Flask, request, jsonify

  • Flask: 웹 애플리케이션을 생성하는 핵심 클래스
  • request: 클라이언트(예: 브라우저)가 보낸 요청 데이터를 읽는 객체
  • jsonify: Python 딕셔너리를 JSON 형식으로 변환해 응답하는 함수

2. 기본 코드 구조

from flask import Flask, request, jsonify

app = Flask(__name__)  # Flask 앱 생성

@app.route('/api/data', methods=['POST'])
def handle_data():
    # 1. 클라이언트의 JSON 데이터 읽기
    data = request.get_json()  

    # 2. 데이터 처리 (예: 이름 추출)
    name = data.get('name', 'Guest')

    # 3. JSON 응답 반환
    return jsonify({ 
        "message": f"Hello, {name}!",
        "status": "success"
    })

if __name__ == '__main__':
    app.run(debug=True)  # 서버 실행

3. 코드 설명

(1) app = Flask(__name__)

  • 역할: Flask 애플리케이션 인스턴스 생성
  • 예시: app은 웹 서버의 핵심 엔진입니다. 모든 설정과 라우팅의 시작점이에요.

(2) @app.route('/api/data', methods=['POST'])

  • 역할: 경로(URL)HTTP 메서드를 정의
  • 예시: http://localhost:5000/api/data 주소로 POST 요청이 오면 아래 함수 실행

(3) request.get_json()

  • 역할: 클라이언트가 보낸 JSON 데이터를 Python 딕셔너리로 변환
  • 예시:
    // 클라이언트가 보낸 데이터
    { "name": "Alice", "age": 25 }
    data = {"name": "Alice", "age": 25}

(4) jsonify()

  • 역할: Python 딕셔너리를 JSON 응답으로 변환
  • 예시:
    return jsonify({"message": "Success"})
    → 클라이언트는 {"message": "Success"} JSON을 받음

4. request 객체의 주요 기능

메서드 설명 예시
request.args URL 쿼리 파라미터 읽기 ?id=123request.args.get('id')
request.form HTML 폼 데이터 읽기 <input name="email">request.form['email']
request.files 업로드 파일 읽기 request.files['file']
request.headers HTTP 헤더 읽기 request.headers.get('User-Agent')

5. 실행 & 테스트

  1. 서버 실행: 터미널에서 python app.py
  2. 테스트: Postman이나 curl로 POST 요청 전송
    curl -X POST http://localhost:5000/api/data \
         -H "Content-Type: application/json" \
         -d '{"name": "Bob"}'
  3. 응답:
    {
      "message": "Hello, Bob!",
      "status": "success"
    }

6. 왜 JSON을 사용하나요?

  • JSON은 데이터 교환의 국제 표준 형식입니다.
  • 프론트엔드(React)와 백엔드(Python)가 서로 다른 언어로 소통할 때 유용합니다.
  • 모든 프로그래밍 언어가 JSON을 지원합니다.

이제 flask, request, jsonify가 어떻게 동작하는지 이해되셨나요? 😊