Contents
はじめに
FastAPIは、現代的なウェブアプリケーションやマイクロサービスを構築するための高性能なPythonフレームワークです。特に非同期処理をサポートしており、Python 3.6+ の型ヒントを利用することで、開発者がより早く安全にアプリケーションを開発できるように設計されています。この記事では、FastAPIの基本的な使い方と一緒に、小さなAPIのサンプルコードを提供します。
FastAPIの特徴
- 高速な性能
Starlette(ASGIフレームワーク)上に構築されており、Uvicorn(ASGIサーバー)と組み合わせることで、非常に高速な性能を実現します。 - 型安全
Pythonの型ヒントを利用して、リクエストとレスポンスのデータの検証を自動で行います。 - 簡単な依存性注入
依存性注入システムを備えており、テストやデータベースセッションの管理が容易になります。 - 自動ドキュメント生成
OpenAPIスキーマを自動生成し、Swagger UIやReDocを使用してドキュメントを提供します。
環境設定
FastAPIを使い始める前に、Pythonの環境設定が必要です。以下のコマンドで必要なパッケージをインストールします。
pip install fastapi[all]
基本的なAPIの構築
以下のステップで、シンプルなAPIを構築します。このAPIは、ユーザー名を受け取り、挨拶を返すものです。
メインアプリケーションファイル
main.py
を作成し、以下のコードを記述します。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
@app.post("/items/")
async def create_item(item: Item):
return item
パスパラメータとクエリパラメータ
FastAPIでは、関数のパラメータが自動的にパスやクエリのパラメータとして解釈されます。型ヒントを使うことで、これらのパラメータの検証も自動で行われます。
モデルの定義
Pydanticを使用してリクエストとレスポンスのモデルを定義します。以下のようにItem
クラスを定義することで、リクエストのボディが適切に検証されます。
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None
サーバーの実行
FastAPIアプリケーションは、ASGIサーバーであるUvicornを使用して実行します。以下のコマンドでサーバーを起動できます。
uvicorn main:app --reload
このコマンドは、開発中にファイルが変更されたときにサーバーを自動で再起動するための--reload
オプションも含んでいます。
おわりに
FastAPIの基本的な機能と簡単なAPIの構築方法を紹介しました。FastAPIはその性能の高さと開発のしやすさから、Pythonを使用したモダンなAPI開発には非常に適した選択肢です。