Pythonでfastapiを使用しAPIの作成・構築をする

Pythonでfastapiを使用しAPIの作成・構築をしてみます。

なお、今回はAPIの構築ができるWebフレームワーク「fastapi」をPythonに事前にインストールしています。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■スクリプト(.pyファイル)を作成

早速、fastapiを使用しAPIの作成・構築を行っていきますので、スクリプト(.pyファイル)を作成します。

■コード

from fastapi import FastAPI

my_app = FastAPI()

@my_app.get("/getData")
def getData():
    return [{
        "firstName":"Tanaka"
    },{
        "firstName":"Yamada"
    }]

今回は、「my_app」というAPIを作成し、「getData」内でgetDataという関数の定義し、戻り値(return)として、JSON形式のデータを返します。

■実行・検証

このスクリプトを「app.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存します。保存後、スクリプトを実行するために、本番環境用のASGIサーバーが必要になりますので、今回はuvicornをインストールします。

Windowsのコマンドプロンプトを起動します。

pip install uvicorn[standard]

起動後、上記のコマンドを入力し、Enterキーを押します。

なお、今回は、pythonランチャーを使用しており、Python Version 3.8.5にインストールを行うために、pipを使う場合にはコマンドでの切り替えを行います。

py -3.8 -m pip install uvicorn[standard]
Defaulting to user installation because normal site-packages is not writeable
Collecting uvicorn[standard]
Downloading uvicorn-0.15.0-py3-none-any.whl (54 kB)
|████████████████████████████████| 54 kB 544 kB/s
Requirement already satisfied: asgiref>=3.4.0 in c:\users\user_\appdata\roaming\python\python38\site-packages (from uvicorn[standard]) (3.4.1)
Collecting h11>=0.8
Downloading h11-0.12.0-py3-none-any.whl (54 kB)
|████████████████████████████████| 54 kB 1.4 MB/s
Requirement already satisfied: click>=7.0 in c:\users\user_\appdata\roaming\python\python38\site-packages (from uvicorn[standard]) (7.1.2)
Collecting httptools==0.2.*; extra == "standard"
Downloading httptools-0.2.0-cp38-cp38-win_amd64.whl (141 kB)
|████████████████████████████████| 141 kB 2.2 MB/s
Requirement already satisfied: websockets>=9.1; extra == "standard" in c:\users\user_\appdata\roaming\python\python38\site-packages (from uvicorn[standard]) (9.1)
Requirement already satisfied: colorama>=0.4; sys_platform == "win32" and extra == "standard" in c:\users\user_\appdata\roaming\python\python38\site-packages (from uvicorn[standard]) (0.4.4)
Collecting watchgod>=0.6; extra == "standard"
Downloading watchgod-0.7-py3-none-any.whl (11 kB)
Requirement already satisfied: python-dotenv>=0.13; extra == "standard" in c:\users\user_\appdata\roaming\python\python38\site-packages (from uvicorn[standard]) (0.18.0)
Requirement already satisfied: PyYAML>=5.1; extra == "standard" in c:\users\user_\appdata\roaming\python\python38\site-packages (from uvicorn[standard]) (5.4.1)
Installing collected packages: h11, httptools, watchgod, uvicorn
Successfully installed h11-0.12.0 httptools-0.2.0 uvicorn-0.15.0 watchgod-0.7

Enterキーを押すと、インストールが開始され、上記のように「Successfully installed」と表示されます。これが表示されれば、uvicornが正常にインストールされたことになります。

なお、今回はuvicornのバージョン0.15.0をインストールしました。

インストール後、「app.py」をコマンドプロンプトからuvicornを起動し実行してみます。

> uvicorn app:my_app(ファイルに付けた名前)

INFO: Started server process [6184]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)

実行してみると、上記のようなメッセージが出力されますので、メッセージ内の「http://127.0.0.1:8000」のURLをコピーし、Webブラウザを起動。起動後、WebブラウザのアドレスバーにURLを貼り付けし、アクセスします。

アクセスすると、「{“detail”:”Not Found”}」と表示されます。表示後、URLの後ろに今回作成したAPIを利用するために「/getData」を付けてURLを「http://127.0.0.1:8000/getData」とします。

このURLにアクセスすると、今回作成したAPIからJSON形式のデータを取得することができました。

コメント

タイトルとURLをコピーしました