リリース・改善中
Framework · 2018年公開
FastAPIはPythonの型ヒントをもとに、リクエスト検証・シリアライズ・APIドキュメント生成を自動で行う高性能なWeb APIフレームワークです。
FastAPIは、PythonでWeb APIを作るためのモダンなフレームワークです。2018年にSebastián Ramírezが最初に公開し、現在は多くのコントリビューターとともにオープンソースで開発されています。Web層にはStarlette、データ検証にはPydanticを使っており、関数の引数に付けた型ヒントだけで、リクエストの変換と検証、レスポンスのシリアライズ、APIのOpenAPI定義の生成が行われます。
FastAPIは、入力検証やドキュメントが重要な場面で特に力を発揮します。RESTバックエンド、マイクロサービス、機械学習モデルの提供、社内ツールなどが代表例です。ASGI上で動くため、async関数のエンドポイントは多数の同時接続を効率よく処理でき、通常のdef関数もそのまま使えます。依存性注入の仕組みにより、データベースセッション、認証、設定といった共通処理をきれいに切り出し、テストでは簡単に差し替えられます。
始めるには、仮想環境を作って pip install "fastapi[standard]" でインストールし、fastapi dev main.py を実行してから /docs を開き、対話型ドキュメントからエンドポイントを呼び出してみましょう。公式の「Tutorial - User Guide」は、パスパラメータからセキュリティ、データベース、テストまで段階的に進む構成で、順番に読むことを想定しています。Pythonの型ヒントとPydanticモデルに慣れれば、FastAPIの大部分は自然に理解できます。
引数の型とPydanticモデルを宣言するだけでリクエストデータを変換・検証し、不正な入力には詳しいエラーを自動で返します。
コードからOpenAPIスキーマを生成し、/docs(Swagger UI)と /redoc で対話型ドキュメントとして提供します。
Dependsでデータベースセッション、認証、共通パラメータを宣言すると、FastAPIがリクエストごとに解決し、テストでは差し替えられます。
StarletteとASGIの上に構築され、async defのエンドポイントで多数の同時接続を効率よく処理でき、通常のdef関数も併用できます。
プロジェクトフォルダでPythonの仮想環境を作成して有効にします。下のコマンドはmacOSとLinux向けで、Windowsでは .venv\Scripts\activate で有効にします。
python -m venv .venv && source .venv/bin/activatestandardエクストラ付きでFastAPIをインストールします。開発サーバーのUvicornやfastapiコマンドラインツールなど、よく使う依存関係も一緒に入ります。
pip install "fastapi[standard]"main.pyを作成して開発サーバーを起動します。コードを変更すると自動で再読み込みされ、ブラウザで http://127.0.0.1:8000/docs を開くと対話型APIドキュメントが表示されます。
fastapi dev main.pyFastAPI()でアプリケーションを作り、@app.getデコレータでパスとHTTPメソッドを関数に結び付けます。関数が返す辞書はJSONレスポンスになります。2つ目のエンドポイントでは item_id: int がパスの値を整数に変換・検証し、デフォルト値を持つ q は省略可能なクエリパラメータになります。fastapi dev main.py で起動し、/docs から両方のエンドポイントを試してみましょう。
main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root():
return {"message": "Hello, world!"}
@app.get("/items/{item_id}")
def read_item(item_id: int, q: str | None = None):
return {"item_id": item_id, "q": q}
pip install "fastapi[standard]"
fastapi dev main.pyインストールから FastAPI の中心となる考え方まで、6 章で順を追って学びます。
FastAPI について質問し、経験を共有し、意見を交わす場所です。
まだディスカッションはありません。最初の話題を始めましょう。
コメント 0件
ログイン · ログインするとコメントできます。
最初のコメントを書いてみましょう。