Python と Flask で RESTful API を作成する

RESTful API (Representational State Transfer) は、ネットワーク アプリケーションを設計するための一般的なアーキテクチャ スタイルです。標準の HTTP メソッドを使用し、スケーラブルでステートレスな Web サービスを作成するためによく使用されます。Flask は軽量の Python Web フレームワークで、そのシンプルさと柔軟性により、RESTful API の開発に最適です。

Flask環境の設定

RESTful API を作成する前に、Flask 環境を設定する必要があります。手順は次のとおりです。

  1. pip を使用して Flask をインストールします。
pip install flask

Flask をインストールしたら、API の開発を開始できます。

シンプルな Flask API の作成

基本的な CRUD (作成、読み取り、更新、削除) 操作を実行できるシンプルな 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 を作成すると、スケーラブルで効率的な Web サービスを迅速に構築できます。このガイドで説明されている手順に従うことで、基本的な API を設定し、さまざまな HTTP メソッドを処理し、エラーを効果的に管理できます。Flask はシンプルなため、API の開発に最適です。Flask の機能を調べ続けると、より複雑で機能豊富な Web サービスを構築できるようになります。