
구조는 이렇게 만들었다.
/todo/model.py 파일을 생성했다.
from pydantic import BaseModel
class TodoItem(BaseModel):
item : int
class Config:
json_schema_extra = {
"example" : {
"item" : 1
}
}
/todo/router.py 파일을 생성했다.
from fastapi import APIRouter, Path
from todo.model import TodoItem
todo_router = APIRouter()
todo_list = []
여기서 router의 경우 main.py에 꼭 추가해주어야 한다.
from fastapi import FastAPI
from board import board_router
from todo.router import todo_router
app = FastAPI()
app.include_router(board_router)
app.include_router(todo_router)
@todo_router.post("/todo")
async def post(todo: TodoItem) -> dict:
todo_list.append(todo)
return {"message" : "success"}
@todo_router.get("/todo")
async def getTodo() -> dict:
return {"list" : todo_list}
@todo_router.get("/todo/{id}")
async def getTodoItem(id: int = Path(gt=-1, title="todo id")) -> dict:
return {"item" : todo_list[id]}
@todo_router.put("/todo/{todo_id}")
async def putTodoItem(todo: TodoItem, todo_id: int = Path(gt=-1, title="todoItem id")) -> dict:
todo_list[todo_id] = todo
return {"message" : "update success"}
put의 경우 일부 수정이면 patch를 사용하는 편이 더 좋지만 우리의 수정은 전부를 수정하는 것과 같아 그냥 put으로 진행했다.
@todo_router.delete("/todo")
async def deleteTodo() -> dict:
todo_list.clear()
return {"message" : "delete all success"}