FastAPI Python 高速開発完全ガイド【2025年最新版】
🚀 はじめに
近年、Web API開発の需要は高まり続けています。従来のフレームワークでは開発スピードやパフォーマンスに課題を感じている方も多いのではないでしょうか?本記事では、PythonのモダンなWebフレームワークであるFastAPIを活用し、高速かつ効率的なAPI開発を実現する方法を解説します。FastAPIは、型ヒントを活用した強力な型チェック機能、自動ドキュメント生成機能、そして高いパフォーマンスを誇ります。本記事を読めば、FastAPIの基礎から応用までを習得し、自信を持ってAPI開発に取り組めるようになるでしょう。
この記事で学べること
- FastAPIの基本的な使い方
- 型ヒントを活用した安全なコードの書き方
- 自動ドキュメント生成機能の活用
- エラーハンドリングの実践
- パフォーマンスチューニングの基礎
📚 基礎知識
FastAPIは、Python 3.7 以降で動作する、高パフォーマンスなAPIフレームワークです。Starlette と Pydantic を基盤として構築されており、Webサーバーの構築とデータ検証を効率的に行うことができます。型ヒントを積極的に利用することで、開発時のエラーを早期に発見し、より安全なコードを書くことができます。
💡 重要なポイント
FastAPIはPython 3.7以上が必要です。古いバージョンのPythonを使用している場合は、アップグレードしてください。
⚡ 実践コード例
それでは、具体的なコード例を通してFastAPIの使い方を解説していきます。
コード例1: Hello World API
まずは、最も基本的なHello World APIを作成してみましょう。
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def read_root():
return {"Hello": "World"}
解説: まずは、`FastAPI`クラスをインポートし、`app`オブジェクトを作成します。次に、`@app.get(“/”)`デコレーターを使用して、ルートパス(“/”)へのGETリクエストを処理する関数を定義します。この関数は、{“Hello”: “World”}というJSONオブジェクトを返します。
コード例2: パラメータを受け取るAPI
次に、パラメータを受け取るAPIを作成してみましょう。
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}
解説: `@app.get(“/items/{item_id}”)`デコレーターで、パスパラメータ`item_id`を定義しています。また、クエリパラメータ`q`を`None`をデフォルト値として定義しています。関数内でこれらのパラメータにアクセスし、JSONオブジェクトとして返します。
コード例3: リクエストボディを受け取るAPI
次に、リクエストボディを受け取るAPIを作成してみましょう。
from fastapi import FastAPI, Body
app = FastAPI()
@app.post("/items/")
async def create_item(item: dict = Body(...)):
return item
解説: `@app.post(“/items/”)`デコレーターで、POSTリクエストを処理する関数を定義しています。`Body(…)`を使用して、リクエストボディ全体を`item`変数に格納しています。この関数は、受け取ったリクエストボディをJSONオブジェクトとして返します。
コード例4: Pydanticモデルを使用したデータ検証
Pydanticモデルを使用することで、データの型を定義し、自動的に検証を行うことができます。
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class Item(BaseModel):
name: str
description: str | None = None
price: float
tax: float | None = None
@app.post("/items/")
async def create_item(item: Item):
return item
解説: `Item`クラスを定義し、`name`, `description`, `price`, `tax`のフィールドを定義しています。`@app.post(“/items/”)`デコレーターで、POSTリクエストを処理する関数を定義しています。この関数は、`Item`モデルを使用してリクエストボディを検証し、JSONオブジェクトとして返します。
コード例5: 自動ドキュメント生成
FastAPIは、Swagger UIとReDocを使用して、APIドキュメントを自動的に生成します。これは、APIの利用方法を理解するのに役立ちます。
実行方法: APIを実行し、ブラウザで`http://localhost:8000/docs`または`http://localhost:8000/redoc`にアクセスすることで、自動生成されたドキュメントを確認できます。
コメント