Python と Flask で RESTful API を作成する
RESTful API (Representational State Transfer) は、ネットワーク アプリケーションを設計するための一般的なアーキテクチャ スタイルです。標準の HTTP メソッドを使用し、スケーラブルでステートレスな Web サービスを作成するためによく使用されます。Flask は軽量の Python Web フレームワークで、そのシンプルさと柔軟性により、RESTful API の開発に最適です。
Flask環境の設定
RESTful API を作成する前に、Flask 環境を設定する必要があります。手順は次のとおりです。
- 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 サービスを構築できるようになります。