fastapi について
Python 開発者向けに、FastAPI と Pydantic を使った REST API および非同期 API の構築を支援するスキルです。モデル、依存性注入、認証、ドキュメント、非同期データベース処理、デプロイを扱います。
主な機能
- 01REST API と非同期 API の構築
- 02Pydantic のリクエスト・レスポンスモデル
- 03依存性注入と認証
- 04ルーティングと OpenAPI ドキュメント
- 05非同期データベース処理
活用シーン
- 01検証済みスキーマを使った REST API の構築
- 02認証とミドルウェアの追加
- 03非同期データベース接続
- 04FastAPI アプリのテストとデプロイ
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ partme-ai/ full-stack-skills --skill fastapiインストール後、Claude Code で/fastapiを入力して読み込まれたか確認します。
同梱ファイルLICENSE.txt
詳細
このスキルを使用する場面
次のようなことをユーザーが希望している場合は、このスキルを使用します。
- FastAPI と Pydantic モデルで REST API または非同期 API を構築する
- 依存性注入、認証、またはミドルウェアを実装する
- ルーティング、OpenAPI ドキュメント、デプロイを設定する
- 非同期パターンを使用してデータベースと連携する
このスキルの使い方
ワークフロー
- アプリを作成する —
FastAPI()をインスタンス化し、ルートハンドラーを定義します - モデルを定義する — リクエストとレスポンスのバリデーションに Pydantic を使用します
- 依存関係を追加する — 認証、DB セッションなどの DI を実装します
- テストしてデプロイする — uvicorn で実行し、
/docsで確認します
クイックスタートの例
from fastapi import FastAPI, HTTPException, Depends
from pydantic import BaseModel
from datetime import datetime
app = FastAPI(title="My API", version="1.0.0")
# Request/Response models
class ItemCreate(BaseModel):
name: str
price: float
description: str | None = None
class ItemResponse(ItemCreate):
id: int
created_at: datetime
# Dependency example
async def get_db():
db = SessionLocal()
try:
yield db
finally:
db.close()
# Route handlers
@app.post("/items/", response_model=ItemResponse, status_code=201)
async def create_item(item: ItemCreate, db=Depends(get_db)):
db_item = Item(**item.model_dump())
db.add(db_item)
db.commit()
return db_item
@app.get("/items/{item_id}", response_model=ItemResponse)
async def get_item(item_id: int, db=Depends(get_db)):
item = db.query(Item).get(item_id)
if not item:
raise HTTPException(status_code=404, detail="Item not found")
return item
# Run the server
uvicorn main:app --reload
# Interactive docs available at http://localhost:8000/docs
認証の例
from fastapi.security import OAuth2PasswordBearer
oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")
@app.get("/users/me")
async def read_current_user(token: str = Depends(oauth2_scheme)):
user = verify_token(token)
if not user:
raise HTTPException(status_code=401, detail="Invalid token")
return user
ベストプラクティス
- Pydantic で明示的なリクエストスキーマとレスポンススキーマを定義し、一貫したステータスコードを使用します
- 高い並行性を実現するため、非同期関数とデータベース接続プールを使用します
- 本番環境向けに CORS ミドルウェアとセキュリティヘッダーを設定します
- API の確認には自動生成される OpenAPI ドキュメント(
/docs、/redoc)を活用します - メール送信などのノンブロッキング処理には
BackgroundTasksを使用します
参考資料
- 公式ドキュメント:https://fastapi.tiangolo.com/
キーワード
fastapi, async API, Pydantic, OpenAPI, dependency injection, Python web, REST API, uvicorn
コメント
Markdown 対応