Open9
FastAPIを始める時のメモ
自分用に作成。
手を動かしながらメモしていく
・Windows環境
・Docker for Windows
・VSCode
・FastAPI
・MySQL
Todoアプリの部分は以下の部分を参考にしました。
Pythonのバージョン確認
コマンドプロンプト
python --version
仮想環境構築
プロジェクトフォルダへ移動して以下を実行
コマンドプロンプト
python -m venv .venv
仮想環境に入ってPythonのバージョン確認
コマンドプロンプト
cd .venv\Scripts
activate
コマンドプロンプトが仮想環境内に切り替わる
コマンドプロンプト
(.venv) python --version
毎回アクティブにするのはダルいので、batファイルを用意する
以下のbatファイルを配置し、ダブルクリックで起動すれば、
仮想環境をアクティブにしつつVSCodeが起動する
vscode.bat
cd /d %~dp0
call ".\.venv\Scripts\activate.bat"
call code .
exit
※以降のコマンドはVSCode内のターミナルにて実行する
pipのアップグレード
VSCode内ターミナル
python -m pip install --upgrade pip
FastAPIをインストール
VSCode内ターミナル
pip install fastapi
Uvicorn
VSCode内ターミナル
pip install "uvicorn[standard]"
「requirements.txt」を出力
VSCode内ターミナル
pip freeze > ./requirements.txt
ディレクトリ構成1
main.pyを作成
main.py
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: str = None):
return {"item_id": item_id, "q": q}
Uvicorn起動
VSCode内ターミナル
uvicorn api.main:app --reload
VSCodeで「pycache」を非表示にする
- 「ファイル」⇒「ユーザー設定」⇒「設定」
- 「files.exclude」で検索
- 「パターンを追加」⇒
**/__pycache__
を入力
「.vscode」フォルダに「launch.json」を作成
launch.json
{
// IntelliSense を使用して利用可能な属性を学べます。
// 既存の属性の説明をホバーして表示します。
// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: FastAPI",
"type": "python",
"request": "launch",
"module": "uvicorn",
"args": [
"api.main:app",
"--reload"
],
"jinja": true,
"justMyCode": true,
}
]
}
※「F5」キーで起動するようになる!
「requirements.txt」の出力を忘れるので、ビルド時に自動出力する
- 「.vscode」内に「tasks.json」を追加
tasks.json
{
// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"version": "2.0.0",
"tasks": [
{
"label": "local_pre_launch_task",
"type": "shell",
"command": "${workspaceFolder}/local_pre_launch_task.cmd",
"presentation": {
"reveal": "always",
"panel": "shared",
"clear": true
}
}
]
}
- 呼び出すコマンドファイル「local_pre_launch_task.cmd」を作成する
local_pre_launch_task.cmd
pip freeze > ./requirements.txt
※ ここではwindowsのみを想定して、拡張子は「.cmd」
- 「launch.json」から呼び出す(タスクのラベル名を指定)
launch.json
{
// IntelliSense を使用して利用可能な属性を学べます。
// 既存の属性の説明をホバーして表示します。
// 詳細情報は次を確認してください: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: FastAPI",
"type": "python",
"request": "launch",
"module": "uvicorn",
"args": [
"api.main:app",
"--reload"
],
"jinja": true,
"justMyCode": true,
+ "preLaunchTask": "local_pre_launch_task",
}
]
}
ディレクトリ構造変更
※後でDockerでMySQLを追加する
※git用に「.gitignore」を追加しておきたい
todo_app
├─ database
│ └─ mysql
│ ⇒ 後でDockerでMySQLを構築する
├─ web
│ ├─ .venv
│ │ ⇒ python仮想環境
│ │
│ ├─ .vscode
│ │ ⇒ VSCodeの設定
│ │
│ └─ api
│ │ ⇒ FastAPIのソースコード
│ │
│ ├ requirements.txt
│ │
│ └ vscode.bat
└ .gitignore
.gitignore
# 仮想環境不要
/web/.venv/
# pemファイル不要
*.pem
# envファイル不要
*.env
# キャッシュファイル不要
*.pyc
# キャッシュフォルダ不要
*__pycache__/
# DS_Storeファイル不要
.DS_Store
# ログファイル不要
/web/api/log/*
/database/mysql/log/*
!.gitignore