![見出し画像](https://assets.st-note.com/production/uploads/images/92475016/rectangle_large_type_2_b551a9a530eedf99f2e8a9f44c8bf9a6.jpeg?width=1200)
FastAPI 超初心者向け入門 / チュートリアル1
以前はDjangoに大変お世話になり、その後浮気してGolangのRevelとか使ってましたが、PythonはAI関連もろもろの広がりがあって便利なことや、FastAP超速いという記事を見て使い始めました。
![](https://assets.st-note.com/img/1669997346800-5zfVK54eaC.png?width=1200)
![](https://assets.st-note.com/img/1669997666185-plLjeRX74Z.png?width=1200)
自動生成されるドキュメント&APIコールのテストが出来るツールとか洗練されているので是非広まって欲しいです。
目標
チュートリアル終了時のゴールは以下です。
1. API触ったことがある人になる
2. HTTPの実物体験のある人になる
3. Python の仮想環境つくった事ある人になる
4. FastAPIで要約(サマライズ)のAPIサーバーを完成
ざっくり記事内容
Pythonの環境
インストール
チュートリアル プロジェクト
準備編が長くなりPython環境まで書けなかったので今回一緒に解説しますmm
(前の記事:FastAPI準備編)
1.Python環境
仮想環境に FastAPIや関連モジュールをインストールしてローカルで実行する前提です。 Linux Mint (Ubuntuとだいたい同じ)で確認していますが、Mac/Windowsでもだいたい同じだと思います。
流れとしては、ローカルフォルダのpythonバージョンを pyenv で3.11にしてから venvを入れて環境作成、そこの上でpipでモジュールをインストールします。
1.pyenv
1-1 pyenv のインストール
ホームディレクトリでgit からcloneします
$ cd #home へ移動
$ git clone https://github.com/pyenv/pyenv.git ~/.pyenv
.bashrc (macだと .bash_profile ) にパスを通してcliで使えるように
# Pyenv environment variables
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
# Pyenv initialization
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init --path)"
fi
1-2 pyenv でpython3.11.0をインストール、現在の作業パスで使うように指定
$ pyenv install 3.11.0
$ pyenv local 3.11.0
pip update
$ pip install --upgrade pip
2. venv
$ python3 -m venv .venv
$ ls
drwxrwxr-x 2 wash wash 4096 12月 1 12:30 bin
drwxrwxr-x 2 wash wash 4096 12月 1 12:30 include
drwxrwxr-x 3 wash wash 4096 12月 1 12:30 lib
lrwxrwxrwx 1 wash wash 3 12月 1 12:30 lib64 -> lib
-rw-rw-r-- 1 wash wash 70 12月 1 12:30 pyvenv.cfg
drwxrwxr-x 3 wash wash 4096 12月 1 12:30 share
アクティベート(有効化)
$ source .venv/bin/activate
作業フォルダに移動したら自動で上記のコマンドが実行されるように .bashrcに以下を追加すると便利。
_virtualenv_auto_activate() {
if [ -e ".venv" ]; then
# Check to see if already activated to avoid redundant activating
if [ "$VIRTUAL_ENV" != "$(pwd -P)/.venv" ]; then
_VENV_NAME=$(basename `pwd`)
echo Activating virtualenv "$_VENV_NAME"...
VIRTUAL_ENV_DISABLE_PROMPT=1
source .venv/bin/activate
_OLD_VIRTUAL_PS1="$PS1"
PS1="($_VENV_NAME)$PS1"
export PS1
fi
fi
}
export PROMPT_COMMAND=_virtualenv_auto_activate
# Pyenv environment variables
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
# Pyenv initialization
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init --path)"
fi
3. pip
venv 設定とactivateができたフォルダで pip でモジュールをインストールすると、そのフォルダの下の .venv にファイルがDLされて、他のプロジェクトに影響しません。
作成済みのrequired.txt からpipで必要モジュールをインストール
$ pip -r required.txt
pipでモジュール追加したときには
$ pip freeze > required.txt
で、保存しておく。
2.FastAPI のインストール
https://fastapi.tiangolo.com/tutorial/
pip install "fastapi[all]"
これだけ。
fastAPI以外に関連するモジュールも一緒にインストールされます。
インストールされたものは pip freeze で確認できます。
$ pip freeze > requirements.txt
pipでインストール・アンインストールするたびに requirements.txtに保存しておくと、別のマシンでこのファイルにあるものをインストールできて便利です。
$ pip install -r requirements.txt
(宿題)
これを自動化する pipenv や poety というツールがありますが、今回問題が出たので使いませんでした。
3.最初のプロジェクト
まずは作業ディレクトリを作成, 上記で説明したように環境を作成します。
$ mkdir tuto_FastAPI
$ cd tuto_FastAPI
$ pyenv install 3.11.0
$ pyenv local 3.11.0
$ python3 -m venv .venv
$ source .venv/bin/activate
.gitignore を作成
github で pythonを指定してリポジトリを作れば自動で作られるやつです。
git のプロジェクトを先に作って、その作業ディレクトリで上記をする場合は必要ありませんが、そうでないときには作っておくのが吉。
下記のURLのファイルを先程作ったディレクトリに配置します。
https://github.com/github/gitignore/blob/main/Python.gitignore
main.py を作ってプロジェクト完成!
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
え?これだけですか。。。今までの長い前フリは一体。。。
いやいや、これ最小限サンプルですので
実行
(実行画面①)
$ 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.
無事に動くと、こんなふうになります。 http://127.0.0.1:8000 と表示されているので、ブラウザにコピペして確認しましょう。
(ブラウザの表示)
{"message": "Hello World"}
おめでとうございます、APIの作成と動作確認ができました!
docsで更に確認
FastAPIは自動でAPIのドキュメント作成をしてくれます。 Swaggerの OpenAPIの /docs というページと、ReDcoを使用した /redoc の2種類のページを作成してくれます。
http://127.0.0.1:8000/docs
http://127.0.0.1:8000/redoc
ブラウザで、上記のURLを表示したのが下の画像です。
(実行画面①ができていれば表示されるはずです)
![](https://assets.st-note.com/img/1670044149919-zzJpN7kami.png?width=1200)
右上のボタン [Try It Out ] を押すとAPIを呼び出すこともできます。下の画像は実際に呼び出した結果の表示です。
![](https://assets.st-note.com/img/1670044346963-2E7AtsT7p9.png?width=1200)
こちらは /redoc でアクセスした表示。どちらのページからもopenapi.jsonとしてダウンロードが出来るので便利です。
![](https://assets.st-note.com/img/1670044530274-QcdDfiMkG3.png?width=1200)
FastAPI,覚えることが少ないのに高速で便利。。。最高じゃないでしょうか?
次回はFastAPIで一番良く使うリクエストパラメータの扱いと、AI文書要約をするAPIサーバーを作成するチュートリアルを解説します。
![](https://assets.st-note.com/img/1670210149142-w2NON2oN5y.png)
いいなと思ったら応援しよう!
![そんちゃー君](https://assets.st-note.com/production/uploads/images/69345279/profile_b7175cf95623f487942ab65e60414aa3.png?width=600&crop=1:1,smart)