🤖

【AI_1日目_2回目】FastAPI_1冊目

2024/09/01に公開

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

背景

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

パスオペレーション関数

パスオペレーション関数・・・パスとオペレーションを組み合わせて定義されるもの

api/routers/stock.py

from fastapi import APIRouter

router = APIRouter()

@router.get("/stocks")
async def get_stocks():
    pass

@router.post("/stocks")
async def create_stock():
    pass

@router.put("/stocks/{stock_id}")
async def update_stock():
    pass

@router.delete("/stocks/{stock_id}")
async def delete_stock():
    pass

これだけの記載だとまだSwagger UIに反映されないので、api/main.pyに追加を行う

from fastapi import FastAPI

from api.routers import stock

app = FastAPI()
api.include_router(stock.router)

再度dockerを起動

docker compose up

スキーマ

FastAPIではPydanticというライブラリで、Pythonでは何も出してくれないものの、APIのバリデーションを行ってくれるとのことでした。

api/schemas/stock.py

from pydantic import BaseModel, Field

class Stock(BaseModel):
    id: int
    stock_name: str | None = Field(None, example="投資ロウト株式会社")

api/routers/stock.pyの修正

from fastapi import APIRouter

from typing import List

import api.schemas.stock as stock_schema

router = APIRouter()

@router.get("/stocks", response_model=List[stock_schema.Stock])
async def get_stocks():
    return [stock_schema.Stock(id=1, stock_name="投資ロウト株式会社")]

@router.post("/stocks")
async def create_stock():
    pass

@router.put("/stocks/{stock_id}")
async def update_stock():
    pass

@router.delete("/stocks/{stock_id}")
async def delete_stock():
    pass

修正していく中で保存をすると、型がおかしかったり、エラーが起きると表示してくれる

他にも

また成功して実行し、swaggerを実行すると下記が表示される。

BaseModel・・・FastAPIのスキーマモデルを表し、クラス継承をしていることを占めす。

class Stock(BaseModel):

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

Discussion