🐃

【Hello World⑨】Fast API @ Python

2024/04/11に公開

FastAPIでPythonのAPIを作ります

Windows11のDocker環境上で
Python言語のフレームワーク「FastAPI」を使ってAPIを作ります。
HTTPのリクエストをFastAPIに渡すインタフェースには「uvicorn」を使います。

環境

Windows 11 Pro 23H2
WLS 2.1.5.0(Ubuntu 22.04.1 LTS)
Docker Desktop 4.29.0
Visual Studio Code

①フォルダ・ファイルを作成

以下の構成でフォルダとファイルを作ります。

フォルダ構成
fastapi
 ├─app
 │  ├─main.py      # FastAPIのアプリ
 │  └─__init__.py  # 空のファイル
 ├─compose.yaml    # コンテナ作成時の指示を記載したファイル
 └─Dockerfile      # イメージ作成時の指示を記載したファイル

以下のコマンドでフォルダ・ファイルを作成します。

PowerShell
mkdir fastapi            ; `
cd fastapi               ; `
mkdir app                ; `
New-Item Dockerfile      ; `
New-Item compose.yaml    ; `
New-Item app/main.py     ; `
New-Item app/__init__.py ; `
code Dockerfile          ; `
code compose.yaml        ; `
code app/main.py

各ファイルは以下の内容で作成します。

compose.yaml
services:
  api:
    build: .
    container_name : fastapi
    working_dir    : /app
    command        : uvicorn main:app --reload --host 0.0.0.0 --port 8000
    ports:
      - "8000:8000"
    volumes:
      - ./app:/app
Dockerfile
FROM python:3.12
RUN  pip install --upgrade pip \
 &&  pip install fastapi==0.103.2 pydantic==2.5.2 uvicorn==0.23.2
main.py
from fastapi import FastAPI
from fastapi.responses import HTMLResponse
app = FastAPI()    
@app.get("/", response_class=HTMLResponse)
async def read_items():
  return """<h1 style='text-align:center;'>Hello World FastAPI on Docker!</h1>"""

②FastAPIのコンテナを起動

以下のコマンドを実行し、FastAPIのコンテナを起動します。

PowerShell
docker compose up -d

③Hello Worldが表示されることを確認

Webブラウザでhttp://localhost:8000に接続して、Hello Worldが表示されることを確認します。

④ドキュメントを表示(Swagger-ui/ReDoc)

Webブラウザでhttp://localhost:8000/docsに接続してSwagger-uiが表示されることを確認します。

Webブラウザでhttp://localhost:8000/redocに接続してReDocのドキュメントが表示されることを確認します。

Discussion