🤖
【AI_1日目_2回目】FastAPI_1冊目
こんにちは投資ロウトです。
背景
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