🚀 FastAPIとは?
FastAPIは、Python 3.5+ と Pydantic v1.x をベースに構築された高性能なWebアプリケーションフレームワークです。現代のWeb開発のベストプラクティスと迅速な開発の理念を組み合わせ、開発者がRESTful APIやリアルタイムWebアプリケーションを効率的に構築するのを支援します。
✨ 主な機能
- 高性能:FastAPIはasync/await非同期プログラミングモデルを使用しているため、高い並行性を持つリクエストの処理が容易です。
- 使いやすさ:PydanticモデルとPythonの型ヒントを通じて、APIのリクエストとレスポンスの構造を迅速に定義できます。
- 自動ドキュメント生成:Swagger UIとReDocが組み込まれており、追加の設定なしでインタラクティブなAPIドキュメントを生成できます。
- 拡張性:ミドルウェア、カスタムルート、プラグインをサポートしており、機能拡張が容易です。
📦 インストール
FastAPIを使用するには、まず必要な依存関係をインストールする必要があります。
pip install fastapi[all]
これにより、FastAPIとそのすべての依存関係(PydanticやStarletteなど)がインストールされます。
💻 使用例
基本的な使用法
最初のFastAPIアプリケーションを作成しましょう。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
アプリケーションを起動します。
uvicorn main:app --reload
ブラウザで http://localhost:8000
にアクセスすると、自動生成されたSwagger UIを見ることができます。
高度な使用法
パスパラメータ
@app.get("/items/{item_id}")
async def read_item(item_id: str):
return {"item_id": item_id}
http://localhost:8000/items/5
にアクセスすると、{"item_id": "5"}
が返されます。
クエリパラメータ
@app.get("/items")
async def read_items(q: str = None):
if q:
return {"q": q}
else:
return {"message": "No query string received"}
http://localhost:8000/items?q=hello
にアクセスすると、{"q": "hello"}
が返されます。
リクエストボディパラメータ
from typing import Optional
import json
@app.post("/items")
async def create_item(data: dict):
return data
/items
にPOSTリクエストを送信し、リクエストボディを以下のように設定します。
{
"name": "item1",
"price": 10.5
}
同じJSONデータが返されます。
ミドルウェア
FastAPIでは、ミドルウェアを追加して機能を拡張できます。例えば、ログ記録ミドルウェアを追加することができます。
@app.middleware("http")
async def log_request(request, call_next):
print(f"Request received: {request.url}")
response = await call_next(request)
print(f"Response sent: {response.status_code}")
return response
自動ドキュメント
FastAPIにはSwaggerとReDocが組み込まれており、開発者がAPIドキュメントをテストしたり参照したりするのが容易です。
http://localhost:8000/docs
にアクセスすると、インタラクティブなSwagger UIが表示されます。http://localhost:8000/redoc
にアクセスすると、より詳細なReDocドキュメントが表示されます。
📚 ドキュメント
FastAPIは強力で使いやすいWebフレームワークであり、高性能なRESTful APIやリアルタイムWebアプリケーションの迅速な開発に適しています。組み込みのドキュメント生成機能と非同期サポートにより、開発者はWebアプリケーションを効率的に構築およびデプロイすることができます。







