FastAPI でREST APIを構築する基本パターン
概要
FastAPIは高速でモダンなWebフレームワークであり、Pythonの型ヒントを活用してAPIの自動ドキュメント生成や入力データのバリデーションを行うことができます。この記事では、FastAPIを使用してREST APIを構築する基本パターンについて解説します。
この技術の用途と重要性
FastAPIを使用することで、Pythonの高速性と型ヒントの恩恵を受けながら、効率的にREST APIを構築することができます。APIの開発を迅速に行いたい場合や、型による静的解析によって開発効率を向上させたい場合に特に重要です。
解決する問題や課題
従来のWebフレームワークよりも高速でありながら、型ヒントを活用したAPI開発を行いたい場合にFastAPIは適しています。また、自動生成されるAPIドキュメントが開発者間のコミュニケーションを円滑にすることができます。
前提知識・必要ライブラリ
- Pythonの基本知識
- FastAPIの基本概念
- pip (Pythonパッケージマネージャ)
環境構築
# 必要ライブラリのインストール
pip install fastapi uvicorn
実装コード
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"message": "Hello, World!"}
上記のコードでは、FastAPIを使用して"/"エンドポイントにアクセスすると"Hello, World!"というメッセージを返すAPIを作成しています。
使用例
# より実用的な使用例
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
上記のコードでは、"/items/{item_id}"エンドポイントにGETリクエストを送信すると、指定されたitem_idとクエリパラメータqを返すAPIを作成しています。
テストコード
# pytest を使ったテストコード例
import pytest
from fastapi.testclient import TestClient
from main import app
client = TestClient(app)
def test_read_root():
response = client.get("/")
assert response.status_code == 200
assert response.json() == {"message": "Hello, World!"}
応用・カスタマイズ
FastAPIでは、便利な機能やデコレータを活用することで、より高度なAPIの構築やカスタマイズが可能です。例えば、セキュリティ設定やデータベース接続、エラーハンドリングなどを行うことができます。
関連技術
- FastAPI 公式ドキュメント: https://fastapi.tiangolo.com/
- Pydantic (FastAPIで使用されるデータ構造のバリデーションライブラリ)
- Starlette (FastAPIの基盤となっている非同期Webフレームワーク)
—
このように、FastAPIを使用してREST APIを構築する基本パターンについて解説しました。FastAPIの高速性と型ヒントの恩恵を活用しながら、効率的にAPI開発を行いましょう。