🌏

FastAPIとは? 「基本のキ」

2024/01/23に公開

業務でfastAPIを使うことになったので、学習がてらFastAPIについてまとめます。

FastAPI 概要

  • APIを構築するためのモダンで高速なPyhton Webフレームワーク
  • 型ヒントに基づいて開発を行う。(基本的にPythonは型を重視して開発少ない)

FastAPI メリット

  • パフォーマンス・開発・処理が高速(非同期処理をサポート)
  • 型ヒントでの安全性が高い。
  • 自動ドキュメント生成機能
    • 型を元にopenAPIを自動生成してくれる。
  • 大企業もFastAPIを採用している。

他フレームワークとの比較

  • django
    • 1つでなんでもできる万能型
    • 組み込み機能が多く、大規模向け。
    • 学習コストが高い
  • Flask
    • マイクロフレークワークとして、必要最低限しかない。
    • 柔軟に拡張可能だが、追加しなければならない。

型ヒント

さっきから型ヒントと連発しているが何かイメージがつかない、、、
型ヒントとは?

  • 変数や関数などを定義する際にその型を明示的に記述するための機能。
    • pythonは元々動的型付け言語
    • バグなどの早期発見につながる。
  • Python3.5から公式にサポートされるようになった。

使い方

a: int = 1
A: float = 1.0
b: bool = True
c: str = "a"

# リスト型
e:list[str] = ["a", "b", "c"]

# 辞書型
d:dict[str, str] = {"a": "b", "c": "d"}

# オプショナル型(特定の型 or None)
from typing import Optional
g: Optional[int] = 1

# Annotated
from typing import Annotated
Weight: Annotated[int, "g"]
w : Weight = 1

※辞書型とは、JSで言うオブジェクト形式のこと。keyとvalueのセット。
※Noneとnullが全く同じものである、とは言わないですが、同じ使われ方をするもの。
※Annotatedは基本的に細く情報を書く。FastAPIにはDIを使う時に使用する。

def sum(a: int, b: int) -> int:
    return a + b

※関数などにも使うことができる。


https://docs.python.org/ja/3/library/typing.html

Discussion