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=searchPydantic のリクエストボディ
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 successHTTPException
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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- FastAPI プロジェクトのセットアップと最初のエンドポイント
- パスパラメーター、クエリパラメーター、リクエストボディ
- 依存性注入と認証
- 非同期エンドポイントとデータベース連携