cat posts/fastapi-%e3%81%a7-api-%e3%82%92%e4%bd%9c%e3%82%8b%e3%81%a8%e9%80%9f%e3%81%84%e3%81%a8%e3%81%84%e3%81%86%e8%a9%b1.md

FastAPI で API を作ると速いという話

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 を試してみてください。慣れると他のフレームワークに戻りにくくなります。