FastAPI は、Python で API を構築するための最新の高性能 Web フレームワークであり、開発者は最小限の労力で強力で効率的なアプリケーションを作成できます。非同期プログラミングを念頭に置いて設計されているため、非常に高速で、複数のリクエストを同時に処理できます。 FastAPI を強化する主要なコンポーネントには、Uvicorn、Starlette、Swagger UI、Pydantic などがあります。このガイドでは、これらの各コンポーネントを調べ、それらが FastAPI でどのように組み合わされるかを、主要な概念を示すコード例とともに確認します。
FastAPI は 2 つの主要な基盤に基づいて構築されています:
その構造を理解するために、単純な FastAPI アプリから始めましょう:
# main.py from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"}
これは、{"Hello": "World"} の JSON 応答を返す単一のルート (/) を持つ基本的な FastAPI アプリケーションです。
このアプリを実行するには、非同期 Web アプリケーションを提供するように設計された ASGI サーバーである Uvicorn を使用します。
Uvicorn は、非同期コードの処理用に最適化された超高速 ASGI サーバーです。これは、受信した HTTP リクエストを処理し、これらのリクエストのライフサイクルを管理するため、FastAPI アプリケーションの実行に不可欠です。
Uvicorn で FastAPI アプリを実行するには、次のコマンドを使用します:
uvicorn main:app --reload
このコマンドを実行すると、Uvicorn が FastAPI アプリの提供を開始し、http://127.0.0.1:8000 でアクセスできるようになります。
FastAPI は、ルーティング、ミドルウェア、WebSocket サポートなどのコア HTTP 操作を処理する軽量の ASGI フレームワークである Starlette 上に構築されています。 Starlette は、FastAPI が HTTP リクエストを管理するために使用する低レベルのツールを提供し、Web アプリケーションを構築するための安定したパフォーマンスの高い基盤となります。
FastAPI は Starlette のルーティング システムを利用して API エンドポイントを定義します。例:
@app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id}
この例では:
Starlette では、CORS (Cross-Origin Resource Sharing)、要求ログ、カスタム認証の処理など、さまざまな操作用の ミドルウェア を追加することもできます。
# main.py from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"}
Starlette のこの柔軟性により、FastAPI は高度に構成可能になり、開発者は必要に応じてカスタム ミドルウェアを簡単に追加できます。
FastAPI は、Swagger UI を使用してインタラクティブな API ドキュメントを自動的に生成します。このドキュメントはデフォルトで /docs にあり、開発者はブラウザから直接エンドポイントをテストできます。
これを実際に確認するには、FastAPI アプリを起動し、http://127.0.0.1:8000/docs にアクセスしてください。すべてのルート、そのパラメーター、および予期される応答をリストした対話型の Swagger UI が表示されます。
別のドキュメント インターフェイスである ReDoc も、デフォルトで /redoc に提供されており、API 仕様のより詳細なビューを提供します。
FastAPI の最も強力な側面の 1 つは、データ検証に Pydantic を使用することです。 Pydantic モデルを使用すると、厳密な型制約と自動検証を使用してリクエスト データとレスポンス データの構造を定義できます。
例に Pydantic モデルを追加してみましょう:
uvicorn main:app --reload
このコード内:
/docs で Swagger UI を使用して次のようなリクエストを送信してみてください:
@app.get("/items/{item_id}") async def read_item(item_id: int): return {"item_id": item_id}
FastAPI はデータを検証し、データが予期された型と一致しない場合は自動的にエラーを返します。たとえば、価格が文字列 (「20」など) として指定された場合、FastAPI は詳細な検証エラーで応答します。
さらにルートを追加し、これまでに学習したことをすべて組み合わせて、アプリを拡張してみましょう:
from starlette.middleware.cors import CORSMiddleware app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], )
このセットアップでは:
このアプリケーションを実行するには、Uvicorn を使用します:
# main.py from fastapi import FastAPI app = FastAPI() @app.get("/") async def read_root(): return {"Hello": "World"}
http://127.0.0.1:8000/docs に移動して対話型ドキュメントを参照するか、cURL や Postman などのツールを使用してさまざまなエンドポイントにリクエストを送信します。
FastAPI は、非同期プログラミングのパフォーマンス上の利点と Python の型ヒントのシンプルさを組み合わせて、高速で使いやすく、運用アプリケーションに適したフレームワークを作成します。 Uvicorn、Starlette、Swagger UI、Pydantic を統合することにより、FastAPI は API 開発への驚くほど合理化されたアプローチを提供し、ラピッド プロトタイピングと運用グレードのアプリケーションの両方に最適な選択肢となります。
これらの中核となる基礎が整ったので、FastAPI の世界にさらに深く入り込み、スケーラブルで高性能なアプリケーションを構築する準備が整いました。
以上がFastAPI の基礎を理解する: FastAPI、Uvicorn、Starlette、Swagger UI、および Pydantic のガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。