🤖
【AI_5日目】FastAPI_1冊目
こんにちは投資ロウトです。
背景
AI開発ができるためにwebAPIについて理解を深めていきます。
※Tailwind CSSとkeycloakは現場でピンチになれば再開します。
スキーマ
api/schemas/task.py
from pydantic import BaseModel, Field
class StockBase(BaseModel):
# 共通するフィールドは親クラスに定義
stock_name: str | None = Field(None, example="投資ロウト株式会社")
class StockCreate(StockBase):
pass
class StockCreateResponse(StockCreate):
id: int
class Config:
# orm_modeはDB操作の為に必要とのこと。
orm_mode = True
class Stock(StockBase):
id: int
class Config:
orm_mode = True
api/routers/stock.py
# レスポンスするものは、StockCreateResponseの方で返却されるように型定義
@router.post("/stocks", response_model=stock_schema.StockCreateResponse)
# StockCreateで株の名前を受け取り、StockCreateResponseでidを付与し、受け取った情報とともに返却する
async def create_stock(stock_body: stock_schema.StockCreate):
return stock_schema.StockCreateResponse(id=1, **stock_body.dict())
APIを投げてみたいと思います。
きちんと返ってきました。
逆にjsonがNoneだと
デフォルト値がきちんと返ってきております。
またこの時点までの開発でAPIモックの役割を果たすとのことです。ただ過去の現場でこのままでは使いづらいので、以下のようなツールを使って開発などを行っておりました。
またFastAPIではSwagger UIをフロントエンドに引き渡せるので、スキーマ駆動開発が実現できるとのことでした。
MySQLコンテナの作成
docker-compose.yamlを用意する
その後にdocker compose upで起動。コンテナ内でMySQLとFastAPIが起動されているようです。
別ターミナルを起動し、MySQLにアクセスしてみます。
docker compose exec db mysql demo
以下のように表示されて動作されない。
no configuration file provided: not found
どうやらプロジェクトのルートで実行しないといけないよう。
# ルートディレクトリに移動
pushd ルートディレクトリ
再度同じコマンドを実行します。
# 以下のエラーが発生
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)
パスワードを指定していないのが、原因だったので、指定する
docker compose exec db mysql -u root -p 接続したいデータベース名
Docker内のDBにアクセスできた
と短いですが、一旦以上で学習を区切りたいと思います。ご精読ありがとうございました。焦らずコツコツ進めていきたいと思います。
Discussion