Python で API を書くなら Flask か Django だろうと思っていた時期がありました。
FastAPI を使い始めたのは RAG システムの API 部分を作ったときです。型ヒントを書くと自動でバリデーションが入り、Swagger UI が生成されます。「これ最初から使えばよかった」と思いました。
気に入っている点
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Question(BaseModel):
text: str
max_results: int = 5
@app.post("/search")
async def search(q: Question):
results = await vector_search(q.text, q.max_results)
return {"results": results}
型ヒントを書けば Pydantic がバリデーションし、OpenAPI ドキュメントが自動で生成されます。フロントエンドに「どんな API ですか」と聞かれたら Swagger UI の URL を渡せばほぼ解決します。
非同期対応
async def で書くだけで非同期エンドポイントになります。外部 API 呼び出しや DB クエリが多いエンドポイントでは体感できる速度差があります。
Python でバックエンドを書く機会があればまず FastAPI を試してみてください。慣れると他のフレームワークに戻りにくくなります。