Python과 Flask를 사용하여 RESTful API 만들기

RESTful API(Representational State Transfer)는 네트워크 애플리케이션을 설계하는 데 인기 있는 아키텍처 스타일입니다. 표준 HTTP 메서드를 사용하며 일반적으로 확장 가능하고 상태 없는 웹 서비스를 만드는 데 사용됩니다. Flask는 단순성과 유연성으로 인해 RESTful API를 개발하는 데 이상적인 가벼운 Python 웹 프레임워크입니다.

플라스크 환경 설정하기

RESTful API를 만들기 전에 Flask 환경을 설정해야 합니다. 설정 방법은 다음과 같습니다.

  1. pip를 사용하여 Flask 설치:
pip install flask

Flask가 설치되면 API 개발을 시작할 수 있습니다.

간단한 Flask API 만들기

기본 CRUD(Create, Read, Update, Delete) 작업을 수행할 수 있는 간단한 RESTful API를 만들어 보겠습니다. 기본적인 예는 다음과 같습니다.

from flask import Flask, jsonify, request

app = Flask(__name__)

# Sample data
tasks = [
    {'id': 1, 'title': 'Buy groceries', 'done': False},
    {'id': 2, 'title': 'Walk the dog', 'done': True}
]

@app.route('/tasks', methods=['GET'])
def get_tasks():
    return jsonify({'tasks': tasks})

@app.route('/tasks/', methods=['GET'])
def get_task(task_id):
    task = next((task for task in tasks if task['id'] == task_id), None)
    if task is None:
        return jsonify({'error': 'Task not found'}), 404
    return jsonify({'task': task})

@app.route('/tasks', methods=['POST'])
def create_task():
    new_task = request.get_json()
    tasks.append(new_task)
    return jsonify({'task': new_task}), 201

@app.route('/tasks/', methods=['PUT'])
def update_task(task_id):
    task = next((task for task in tasks if task['id'] == task_id), None)
    if task is None:
        return jsonify({'error': 'Task not found'}), 404
    data = request.get_json()
    task.update(data)
    return jsonify({'task': task})

@app.route('/tasks/', methods=['DELETE'])
def delete_task(task_id):
    global tasks
    tasks = [task for task in tasks if task['id'] != task_id]
    return jsonify({'result': 'Task deleted'})

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

이 예에서:

  • /tasks (GET)은 모든 작업 목록을 반환합니다.
  • /tasks/<task_id> (GET)은 ID로 특정 작업을 반환합니다.
  • /tasks (POST)는 새로운 작업을 생성합니다.
  • /tasks/<task_id> (PUT)은 기존 작업을 ID로 업데이트합니다.
  • /tasks/<task_id> (DELETE)는 ID로 작업을 삭제합니다.

API 테스트

Flask API를 테스트하려면 Postman과 같은 도구나 curl과 같은 명령줄 도구를 사용할 수 있습니다. 예를 들어, 작업을 검색하기 위한 GET 엔드포인트를 테스트하려면 다음을 사용할 수 있습니다.

curl http://localhost:5000/tasks

오류 및 예외 처리

적절한 오류 처리가 견고한 API에 필수적입니다. Flask에서는 사용자 정의 오류 처리기를 정의하여 오류를 처리할 수 있습니다. 예를 들어, 다음과 같이 404 오류를 처리할 수 있습니다.

@app.errorhandler(404)
def not_found_error(error):
    return jsonify({'error': 'Not found'}), 404

결론

Python과 Flask로 RESTful API를 만들면 확장 가능하고 효율적인 웹 서비스를 빠르게 빌드할 수 있습니다. 이 가이드에 설명된 단계를 따르면 기본 API를 설정하고 다양한 HTTP 메서드를 처리하고 오류를 효과적으로 관리할 수 있습니다. Flask의 단순성은 API를 개발하기에 좋은 선택이며, Flask의 기능을 계속 탐색하면 더 복잡하고 기능이 풍부한 웹 서비스를 빌드할 수 있습니다.