経緯
これまではフロントをメインに業務を行なっていたが、業務の都合上バックエンドも挑戦して欲しいと提案してもらえた。
ただ何も知らなすぎるためひとまず公式チュートリアルを翻訳しながらSwaggerとredocの表示まで進めてみた。
前提条件
python, pip, uvicorn, fastAPI
がインストールされていること
チュートリアルには特に書いておらず、全てのインストール方法を調べるのが面倒だった。
python
brew install python3
非常に高速なASGIサーバーのこと。
Fast API利用に必要。
https://www.uvicorn.org/
uvicorn
pip3 install uvicorn
fast api
pip3 install fastapi
公式チュートリアル
ファイル作成
一番シンプルなFast apiのファイルを作ってみましょう。
main.py
# starlette(https://www.starlette.io/)から継承したFastAPIクラス
from fastapi import FastAPI
# 全てのAPI作成の基
# サーバーの起動コマンドにも利用
app = FastAPI()
# パスは"/", getリクエスト処理
@app.get("/")
# 通常のpythonの関数定義
async def root():
# "/"にgetリクエストを行った時のレスポンス内容
return {"message": "Hello World"}
※ ファイル名はmain.pyとすること(実行時にこのファイル名を指定するため)
コマンド実行
それでは実行してみましょう
uvicorn main:app --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [28720]
INFO: Started server process [28722]
INFO: Waiting for application startup.
INFO: Application startup complete.
※ 上記コマンドの意味
main: コードを記述したファイル名
app: main.pyで作成されたFastAPIのオブジェクト "app = FastAPI()"
--reload: コードに変更があると、その変更を検知し、サーバーをリスタートする(ホットリロード)
結果確認
JSONレスポンス確認
上記のコマンドを打つと、下記のようなものがあるでしょう
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
このURLをcmd+clickするか、ブラウザに打ち込んでみましょう。
{"message": "Hello World"}
というJSONのレスポンスが表示されたかと思います。
Swagger確認
http://127.0.0.1:8000/docs
とすると、下記のようにSwagger UIによるAPIのドキュメントが自動で生成されます。
redoc確認
http://127.0.0.1:8000/redoc
とすると、
下記のようにredocによるAPIのドキュメントが自動で生成されます。
参考