FastAPI ルーティング
ファイル一覧
プロジェクトフォルダ
┗ db.py
┗ main.py
┗ migrate_db.py
┗ models
┗ cruds
┗ schemas
┗ routers
┗ task.py
┗ done.py
レスポンスにスキーマ利用
※/routers/task.py
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
import api.schemas.task as task_schema
from api.db import get_db
router = APIRouter()
@router.get(“/tasks”, response_model=list[task_schema.Task])
async def list_tasks():
return [task_schema.Task(id=1, title=”1つ目のToDoタスク”)]
@router.post(“/tasks”, response_model=task_schema.TaskCreateResponse)
async def create_task(
task_body: task_schema.TaskCreate,
db: Session = Depends(get_db)
):
return task_schema.TaskCreateResponse(id=1, **task_body.dict())
レスポンスにCRUD利用
from fastapi import APIRouter, Depends
from sqlalchemy.orm import Session
import api.cruds.task as task_crud
from api.db import get_db
router = APIRouter()
※/routers/task.py
@router.get(“/tasks”, response_model=list[task_schema.Task])
async def list_tasks(db: Session = Depends(get_db)):
return task_crud.get_tasks_with_done(db)
@router.post(“/tasks”, response_model=task_schema.TaskCreateResponse)
async def create_task(
task_body: task_schema.TaskCreate,
db: Session = Depends(get_db)
):
return task_crud.crete_task(db, task_body)