0Pricing
Python Academy · レッスン

FastAPI プロジェクトのセットアップと最初のエンドポイント

FastAPI をインストールしてプロジェクトを作成し、最初の GET エンドポイントを記述します。

「FastAPI プロジェクトのセットアップと最初のエンドポイント」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。

FastAPI とは

FastAPI は REST API を構築するための最新の Python Web フレームワークです。自動生成される OpenAPI ドキュメント、Pydantic による型チェック済みのリクエスト・レスポンスモデル、非同期ネイティブの高いパフォーマンスを提供します。

# pip install fastapi uvicorn
from fastapi import FastAPI

app = FastAPI()

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

サーバーの実行

uvicorn で実行します。開発中に --reload フラグを指定すると、コードの変更時に自動的に再起動します。

# main.py
from fastapi import FastAPI
app = FastAPI()

@app.get("/health")
def health(): return {"status": "ok"}

# Terminal:
# uvicorn main:app --reload
# → http://127.0.0.1:8000
# → http://127.0.0.1:8000/docs  (Swagger UI)

HTTP メソッド

ルート関数には @app.get、@app.post、@app.put、@app.delete、または @app.patch を付けます。

from fastapi import FastAPI
app = FastAPI()

@app.get("/items")
def list_items(): return []

@app.post("/items")
def create_item(): return {"id": 1}

@app.delete("/items/{item_id}")
def delete_item(item_id: int): return {"deleted": item_id}

パスパラメータ

ルート文字列では {name} を使ってパスパラメータを宣言し、関数の引数では型アノテーションとともに宣言します。

from fastapi import FastAPI
app = FastAPI()

@app.get("/users/{user_id}")
def get_user(user_id: int):
    return {"user_id": user_id, "name": "Alice"}

# GET /users/42  → {"user_id": 42, "name": "Alice"}

クエリパラメータ

パスに含まれない関数のパラメータは、クエリパラメータになります。

from fastapi import FastAPI
app = FastAPI()

@app.get("/items")
def list_items(skip: int = 0, limit: int = 10, q: str | None = None):
    return {"skip": skip, "limit": limit, "q": q}

# GET /items?skip=5&limit=20&q=search

Pydantic のリクエストボディ

Pydantic の BaseModel をパラメータの型として使用すると、JSON リクエストボディを宣言して検証できます。

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class Item(BaseModel):
    name: str
    price: float
    in_stock: bool = True

@app.post("/items")
def create_item(item: Item):
    return {"received": item.model_dump()}

Pydantic の検証エラー

リクエストボディがスキーマに一致しない場合、FastAPI は詳細なエラーメッセージを含む 422 Unprocessable Entity を自動的に返します。

# POST /items with body {"name": 123}
# → HTTP 422 Unprocessable Entity
# {
#   "detail": [
#     {
#       "type": "string_type",
#       "loc": ["body","name"],
#       "msg": "Input should be a valid string"
#     }
#   ]
# }

レスポンスモデル

response_model= を使用して、エンドポイントが返す内容を宣言します。FastAPI はレスポンスを検証し、余分なフィールドを除外します。

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class UserOut(BaseModel):
    id: int
    name: str

@app.get("/users/{uid}", response_model=UserOut)
def get_user(uid: int):
    return {"id": uid, "name": "Alice", "password": "secret"}  # password filtered out

ステータスコード

status_code= でデフォルトの成功ステータスコードを設定します。一般的なコードは fastapi.status からインポートできます。

from fastapi import FastAPI, status
app = FastAPI()

@app.post("/items", status_code=status.HTTP_201_CREATED)
def create_item():
    return {"id": 1}

# HTTP 201 Created is returned on success

HTTPException

HTTPException を送出すると、カスタムステータスコードと詳細メッセージを含むエラーレスポンスを返せます。

from fastapi import FastAPI, HTTPException
app = FastAPI()

fake_db = {1: "Alice"}

@app.get("/users/{uid}")
def get_user(uid: int):
    if uid not in fake_db:
        raise HTTPException(status_code=404, detail="User not found")
    return {"name": fake_db[uid]}

自動ドキュメント生成

FastAPI はルートのアノテーションから Swagger UI を /docs に、ReDoc を /redoc に自動生成します。

# After starting with uvicorn:
# http://localhost:8000/docs     — Swagger UI (try the API live)
# http://localhost:8000/redoc    — ReDoc (clean docs view)
# http://localhost:8000/openapi.json  — raw OpenAPI schema

確認問題

FastAPI で必須の JSON リクエストボディパラメータを宣言するには、どうすればよいですか。

復習

FastAPI のルートはデコレートされた関数です。パスパラメータは URL に、クエリパラメータは型付き引数に、リクエストボディは Pydantic モデルとして定義します。エラーには HTTPException を送出します。Swagger UI は /docs に自動生成されます。

よくある質問

「FastAPI プロジェクトのセットアップと最初のエンドポイント」レッスンは無料ですか?

はい。「FastAPI プロジェクトのセットアップと最初のエンドポイント」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。

「FastAPI プロジェクトのセットアップと最初のエンドポイント」で何を学びますか?

FastAPI をインストールしてプロジェクトを作成し、最初の GET エンドポイントを記述します。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Python Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「FastAPI プロジェクトのセットアップと最初のエンドポイント」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このPython Academyレッスンでコードを書いて実行できますか?

はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. FastAPI プロジェクトのセットアップと最初のエンドポイント
  2. パスパラメーター、クエリパラメーター、リクエストボディ
  3. 依存性注入と認証
  4. 非同期エンドポイントとデータベース連携
← Python Academyに戻る