FastApi CRUD 만들기 (feat. todo 예제)

최준호·2024년 1월 31일
0

FastAPI

목록 보기
6/9
post-thumbnail

🔴 todo list 만들기

🟠 구조 생성

구조는 이렇게 만들었다.

🟢 model 만들기

/todo/model.py 파일을 생성했다.

from pydantic import BaseModel

class TodoItem(BaseModel):
    item : int
    class Config:
        json_schema_extra = {
            "example" : {
                "item" : 1
            }
        }

🟢 router 만들기

/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)

🟠 CRUD 생성

🟢 post

@todo_router.post("/todo")
async def post(todo: TodoItem) -> dict:
    todo_list.append(todo)
    return {"message" : "success"}

🟢 get

@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]}

🟢 put (update)

@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으로 진행했다.

🟢 delete

@todo_router.delete("/todo")
async def deleteTodo() -> dict:
    todo_list.clear()
    return {"message" : "delete all success"}

0개의 댓글