@app.get("/todo")
async def retreive_todo() -> dict:
'''
현재 DB에 있는 모든 todo 아이템의 목록을 반환
'''
return {
"todos" : todo_list
}
모든 todo를 추출해서 배열로 반환하는 라우트를 ID없이 todo 아이템만 반환하도록 변경하기 위해서 새로운 모델을 추가한다.
from typing import List
...
class TodoItems(BaseModel):
todo: List[TodoItem]
class Config:
schema_extra = {
"example": {
"todos" : [
{
"item" : "Example schema 1"
},
{
"item" : "Example schema 2"
},
]
}
}
이제 todo.py에 있는 라우트에 다음과 같은 응답 모델을 추가해보자.
from model import Todo, TodoItem, TodoItems
@todo_router.get("/todo", resposn_model = TodoItems)
async def retreive_todos() -> dict:
return {
"todos":todo_list
}
애플리케이션 실행
uvicorn main:app --host=127.0.0.1 --port 8000 --reload
이제 새로운 todo를 추가해주자.
curl -X 'POST' \
'http://127.0.0.1:8000/todo' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"id": 1,
"item": "This todo will be retrieved without exposing my ID!"
}'
todo를 추출해보자
curl -X 'GET' \
'http://127.0.0.1:8000/todo' \
-H 'accept: application/json'