🐡

【AI_1日目】FastAPI_1冊目

2024/09/01に公開

こんにちは投資ロウトです。

背景

AI開発ができるためにwebAPIについて理解を深めていきます。
※Tailwind CSSとkeycloakは現場でピンチになれば再開します。

進捗状況

少しずつ進めていっていますが、現在の進捗は以下になっています。

①要件定義:1冊
②設計:1冊
③システムビジネススキル:3冊 + 1冊目(keycloakが進行中)
④インフラ:3冊
⑤フロントエンド:0冊、1冊(TailwindCSSが進行中)
⑥AI:0冊

FastAPI

FastAPIは最近流行っているPython軽量のwebフレームのこと。

【特徴】
・FastAPIは定義ファイルを書かなくても、Swagger UIが自動生成される。
・スキーマを明示的に定義することで、型安全な開発が可能。
・非同期処理が行うことができて、高速。

余談ではありますが、初めて知ったことがあり、本がMarkdonwで書けるというのは、びっくりしました。

Poetry・・・プロジェクトを便利に管理するパッケージマネージャー及び仮想環境管理ツール

https://envader.plus/article/322

Docker

Dockerをインストール後docker composeがあるか確認する

docker compose version

docker-compose.yamlとDockerfileを作成
※省略

イメージのビルド

docker compose build

uvicorn・・・Python用の「ASGI Webサーバ」

https://majisemi.com/topics/oss/4004/

FastAPIのインストール

docker compose run --entrypoint "poetry init --name アプリ名 --dependency fastapi --dependency uvicorn[standard]" アプリ名

FastAPIのパッケージのインストールを実施していきます。

docker compose run --entrypoint "poetry install --no-root" アプリ名

・poetry initとpoetry installでpyproject.tomlとpoetry.lockファイルができた状態になるので、新しいパッケージを入れる際は、以下のように再ビルドするだけでいいとのことです。

docker compose build --no-cache

投資ロウトを表示する

以下のファイルを作成する

/api/main.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/doshirote")
async def printDoshirote():
    return {"message": "投資ロウト"}

APIの立ち上げ

docker compose up

以下のエラーが発生

[+] Running 1/0
 ✔ Container fastapi_pra-demo-app-1  Created                                                                                                              0.0s 
Attaching to fastapi_pra-demo-app-1
fastapi_pra-demo-app-1  | Usage: uvicorn [OPTIONS] APP
fastapi_pra-demo-app-1  | Try 'uvicorn --help' for help.
fastapi_pra-demo-app-1  | 
fastapi_pra-demo-app-1  | 
fastapi_pra-demo-app-1  | Error: No such option: --read (Possible options: --header, --reload, --reload-dir)
fastapi_pra-demo-app-1 exited with code 2

Dockerfileの--reloadを--readとしてしまっていたのが、原因だった。Dockerfileを適切に書き換えを行い、以下で修正を行い、

docker build --no-cache -t イメージ名 .

イメージ名がわからない場合の確認

docker images

再度実行を行う

docker-compose up

localhost:8000/docsにアクセスすると

表示されました。try it outを押下してExecuteを押下すると

正しく返却されました。

と一旦以上で学習を区切りたいと思います。焦らずコツコツ自分のペースで頑張っていきたいと思います。ご精読ありがとうございました。

Discussion