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에서는 request
와 jsonify
를 사용하여 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
주요 엔드포인트
POST /users
: 사용자 추가GET /users
: 모든 사용자 조회GET /users/<id>
: 특정 사용자 조회DELETE /users/<id>
: 사용자 삭제
6. 마무리
이 포스팅에서는 Flask를 활용하여 RESTful API를 개발하고 JSON 데이터를 처리하는 방법을 알아보았습니다. Flask는 간단한 문법과 강력한 기능을 제공하여 초보자부터 전문가까지 누구나 쉽게 RESTful API를 개발할 수 있도록 돕습니다.
'Python > Python Flask' 카테고리의 다른 글
Flask에서 사용자 인증: 세션 관리 및 쿠키 사용 (0) | 2025.09.11 |
---|---|
Flask 사용자 인증: Flask-Login으로 사용자 인증 구현하기 (0) | 2025.09.10 |
Flask로 RESTful API 엔드포인트 만들기 (0) | 2025.09.08 |
Flask RESTful API 기본 개념 (0) | 2025.09.07 |
Flask에서 폼 처리와 파일 업로드 기능 구현하기 (0) | 2025.09.06 |