Python/Python Flask

Flask로 RESTful API와 JSON 데이터 처리하기

임베디드 친구 2025. 9. 9. 19:56
728x90
반응형

Flask로 RESTful API와 JSON 데이터 처리하기

Flask는 파이썬 기반의 간단하면서 강력한 웹 프레임워크로, RESTful API를 쉽게 개발할 수 있는 기능을 제공합니다. 오늘은 Flask를 활용하여 JSON 데이터를 처리하는 방법을 단계별로 알아보겠습니다.

1. Flask 설치 및 기본 설정

먼저 Flask를 설치해야 합니다. Flask는 Python 패키지 관리 도구인 pip을 사용하여 설치할 수 있습니다.

pip install flask

Flask를 설치한 후, 간단한 애플리케이션을 만들어보겠습니다.

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, Flask!"

if __name__ == '__main__':
    app.run(debug=True)

위 코드를 실행하면 기본적인 Flask 웹 애플리케이션이 실행됩니다.


2. RESTful API의 기본 이해

RESTful API는 Representational State Transfer (REST) 아키텍처 스타일을 기반으로 하는 웹 서비스입니다. JSON(JavaScript Object Notation)은 RESTful API에서 가장 널리 사용되는 데이터 포맷입니다. Flask에서는 requestjsonify를 사용하여 JSON 데이터를 쉽게 처리할 수 있습니다.


3. JSON 데이터 처리 예제

다음은 Flask를 사용하여 JSON 데이터를 처리하는 간단한 예제입니다.

3.1 JSON 데이터 받아오기

Flask에서는 클라이언트가 보낸 JSON 데이터를 request.get_json() 메서드를 사용하여 읽을 수 있습니다.

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/data', methods=['POST'])
def handle_data():
    data = request.get_json()
    if not data:
        return jsonify({"error": "No JSON data provided"}), 400

    # 받은 데이터를 처리합니다.
    name = data.get("name")
    age = data.get("age")
    return jsonify({"message": f"Received data: Name={name}, Age={age}"})

if __name__ == '__main__':
    app.run(debug=True)

위 코드는 클라이언트로부터 JSON 데이터를 받아서 처리한 후, 처리 결과를 JSON 형식으로 반환합니다.

클라이언트 요청 예시

{
    "name": "홍길동",
    "age": 25
}

서버 응답 예시

{
    "message": "Received data: Name=홍길동, Age=25"
}

3.2 JSON 데이터 반환하기

Flask의 jsonify 메서드는 Python의 딕셔너리를 JSON 응답으로 변환하는 데 사용됩니다.

@app.route('/response', methods=['GET'])
def send_response():
    response_data = {
        "status": "success",
        "data": {
            "items": [
                {"id": 1, "name": "Item 1"},
                {"id": 2, "name": "Item 2"}
            ]
        }
    }
    return jsonify(response_data)

서버 응답 예시

{
    "status": "success",
    "data": {
        "items": [
            {"id": 1, "name": "Item 1"},
            {"id": 2, "name": "Item 2"}
        ]
    }
}

4. 에러 처리와 상태 코드

JSON 데이터를 처리하는 과정에서 발생할 수 있는 에러를 다루는 방법도 알아봅시다.

@app.route('/validate', methods=['POST'])
def validate_data():
    data = request.get_json()
    if not data:
        return jsonify({"error": "Invalid input"}), 400

    if "name" not in data or "age" not in data:
        return jsonify({"error": "Missing required fields"}), 422

    return jsonify({"message": "Validation successful"}), 200

주요 상태 코드

  • 200 OK: 요청이 성공적으로 처리됨
  • 400 Bad Request: 클라이언트 요청이 올바르지 않음
  • 422 Unprocessable Entity: 요청이 처리할 수 없는 데이터를 포함

5. 실습: 간단한 사용자 관리 API 만들기

다음은 사용자 데이터를 관리하는 간단한 RESTful API입니다.

users = []

@app.route('/users', methods=['POST'])
def add_user():
    data = request.get_json()
    if not data or "name" not in data or "age" not in data:
        return jsonify({"error": "Invalid input"}), 400

    user = {
        "id": len(users) + 1,
        "name": data["name"],
        "age": data["age"]
    }
    users.append(user)
    return jsonify(user), 201

@app.route('/users', methods=['GET'])
def get_users():
    return jsonify(users)

@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
    user = next((u for u in users if u["id"] == user_id), None)
    if not user:
        return jsonify({"error": "User not found"}), 404

    return jsonify(user)

@app.route('/users/<int:user_id>', methods=['DELETE'])
def delete_user(user_id):
    global users
    users = [u for u in users if u["id"] != user_id]
    return jsonify({"message": "User deleted"}), 200

주요 엔드포인트

  1. POST /users: 사용자 추가
  2. GET /users: 모든 사용자 조회
  3. GET /users/<id>: 특정 사용자 조회
  4. DELETE /users/<id>: 사용자 삭제

6. 마무리

이 포스팅에서는 Flask를 활용하여 RESTful API를 개발하고 JSON 데이터를 처리하는 방법을 알아보았습니다. Flask는 간단한 문법과 강력한 기능을 제공하여 초보자부터 전문가까지 누구나 쉽게 RESTful API를 개발할 수 있도록 돕습니다.

반응형