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(ファイルに付けた名前)
[32mINFO[0m: Started server process [[36m6184[0m]
[32mINFO[0m: Waiting for application startup.
[32mINFO[0m: Application startup complete.
[32mINFO[0m: Uvicorn running on [1mhttp://127.0.0.1:8000[0m (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形式のデータを取得することができました。
コメント