FastAPI入門 - Python高速API開発

intermediate | 55分 で読める | 2024.12.28

このチュートリアルで学ぶこと

✓ FastAPIのセットアップ
✓ パスパラメータとクエリ
✓ リクエストボディ(Pydantic)
✓ 依存性注入
✓ 認証とセキュリティ

Step 1: セットアップ

python -m venv venv
source venv/bin/activate
pip install fastapi uvicorn pydantic

Step 2: 基本的なAPI

# main.py
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel

app = FastAPI()

class User(BaseModel):
    id: int
    name: str
    email: str

users: list[User] = []

@app.get("/")
def read_root():
    return {"message": "Hello, FastAPI!"}

@app.get("/users")
def get_users():
    return users

@app.get("/users/{user_id}")
def get_user(user_id: int):
    user = next((u for u in users if u.id == user_id), None)
    if not user:
        raise HTTPException(status_code=404, detail="User not found")
    return user

@app.post("/users", status_code=201)
def create_user(user: User):
    users.append(user)
    return user

Step 3: サーバー起動

uvicorn main:app --reload
# http://localhost:8000
# Swagger UI: http://localhost:8000/docs

Step 4: クエリパラメータ

from typing import Optional

@app.get("/items")
def get_items(
    skip: int = 0,
    limit: int = 10,
    q: Optional[str] = None
):
    items = get_all_items()
    if q:
        items = [i for i in items if q in i.name]
    return items[skip:skip + limit]

Step 5: 依存性注入

from fastapi import Depends

def get_db():
    db = Database()
    try:
        yield db
    finally:
        db.close()

@app.get("/users")
def get_users(db = Depends(get_db)):
    return db.query(User).all()

Step 6: 認証

from fastapi.security import OAuth2PasswordBearer

oauth2_scheme = OAuth2PasswordBearer(tokenUrl="token")

@app.get("/protected")
def protected_route(token: str = Depends(oauth2_scheme)):
    user = verify_token(token)
    return {"user": user}

まとめ

FastAPIは高速で型安全なPython APIフレームワークです。自動ドキュメント生成とPydanticによるバリデーションが魅力です。

← 一覧に戻る