Fast APIとは?

はじめに

FAST APIは、Pythonの型ヒントに基づいたモダンで高速なAPI構築用Webフレームワークです。主な特徴は以下の通りです:

  • 高速:Node.jsやGo並みに高パフォーマンス(StarletteとPydanticによる)。
  • 開発が速い:開発速度が2〜3倍に。
  • バグが少ない:人為的エラーを約40%削減。
  • 直感的:エディタ補完が充実し、デバッグ時間も短縮。
  • 簡単:学習コストが低く、ドキュメントを読む時間も短縮。
  • 簡潔:コード重複が少なく、宣言から複数の機能を得られる。
  • 堅牢:本番環境にすぐ使える。自動の対話型ドキュメント付き。
  • 標準準拠:OpenAPIやJSON Schemaと完全互換。

ここで、Pythonの型ヒント(Type hint)とは、変数や関数の引数・戻り値に「どんな型を使うか」を明示するための記法です。

仮想環境の作成

cd myapp1
python -m venv .venv
source .venv/bin/activate
echo "*" > .venv/.gitignore

% which pip
/home/user/dev/myapp1/.venv/bin/pip
% which python
/home/user/dev/myapp1/.venv/bin/python

Typerのインストール(Fast APIのCLIs)

pip install "fastapi[standard]"

サンプル GET API

from typing import Union

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

実行

% fastapi dev main.py

サンプル PUT API

from typing import Union

from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()


class Item(BaseModel):
    name: str
    price: float
    is_offer: Union[bool, None] = None


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}


@app.put("/items/{item_id}")
def update_item(item_id: int, item: Item):
    return {"item_name": item.name, "item_id": item_id}

関連記事

カテゴリー

アーカイブ

Lang »