pythonでFastAPIを試す
一回纏めて再学習
FastAPI入門https://zenn.dev/sh0nk/books/537bb028709ab9/viewer/f1b6fc
パラメタの違い
- パスパラメタ http://127.0.0.1:8000/items/3
- クエリパラメタ http://127.0.0.1:8000/items/?skip=0&limit=10
- リクエストボディ ???
環境構築
pip install fastapi
と
pip install sqlalchemy uvicorn
を実施。途中でpythonのバージョンアップしろと言われたので、素直に従いました。
run.py (サーバ立ち上げ用)
urls.py (URLのルーティング用)
controllers.py (レスポンス処理用)
を作りましたが、以下のエラーが出てきました。
> python run.py
Traceback (most recent call last):
File "run.py", line 1, in <module>
from urls import app
File "C:\Users\ebata\fastapi\urls.py", line 1, in <module>
from controllers import *
File "C:\Users\ebata\fastapi\controllers.py", line 3, in <module>
app = FastAPI(
NameError: name 'FastAPI' is not defined
さて、python環境構築の経験もなく、python使うの数年ぶり、ということで、まあ、「ご挨拶」でしょう。
試しに、 https://wp.kobore.net/江端さんの技術メモ/post-7450/ を入れて実行してみたとこ、ちゃんと動くようなので、環境側の問題 と特定しました。
ーーーー
PS C:\Users\ebata\fastapi> uvicorn main:app --reload
ERROR: Error loading ASGI app. Attribute "app" not found in module "m
が出てきたので、いろいろ調べたら、なんとプログラムがセーブされていなかったという間抜けなオチでした。
実施した(履修した)ページ
- https://www.youtube.com/watch?v=vVNCVgYb6Xw&t=2844s (Youtube)
- https://rightcode.co.jp/blog/information-technology/fastapi-tutorial-todo-apps-environment
- https://fastapi.tiangolo.com/ja/tutorial/first-steps/
- https://cpp-learning.com/fastapi/#Web_API
現時点までの実施事項(続き)
https://fastapi.tiangolo.com/ja/tutorial/body/ の、「クエリパラメータ」まで履修完了。續きは、「リクエストボディ」から。
現在、履修に使っているホルダは、~/fastapi, ~/fasapi2
所感
外部インタフェースについては、Webや他の手段でAPIを叩くことができると思うが、モジュール間の関数にfastapiを使うことは可能だろうか。
原理的には、curl等で送り込めばば、何でも可能と思うが、相互通信を考えるとwebsocketを剥き出しにした方がよいのではないだろうか?
ちなみに、FastAPIでPostgresqlのDBアクセスをやろうと思ったけど、
$ pip install psycopg2
がどうしてもインストールできずに、断念(くやしい)
以上