Data Navigator

FastAPI 설치 환경 세팅 및 간단한 테스트 웹 만들기6 - todo 목록 반환 모델 만들기 본문

FastAPI

FastAPI 설치 환경 세팅 및 간단한 테스트 웹 만들기6 - todo 목록 반환 모델 만들기

코딩하고분석하는돌스 2024. 5. 8. 23:34

FastAPI 설치 환경 세팅 및 간단한 테스트 웹 만들기6

- todo 목록 반환 모델 만들기 -

 

 

1. Todo list 출력하기

 

현재 만들어져있는 todo 어플리케이션에서 전체 todo 목록을 출력하는 부분은 GET /todo Retrive Todos 이다.

localhost:8000/docs로 접속해 post /todo 부분의 try it out 에서 샘플 데이터 3개를 입력하고 출력해 보자.

 

1) localhost:8000/docs로 접속해 post /todo 부분의 try it out 에서 샘플 데이터 3번 입력한다.

 

{
  "id": 1,
  "item": "Example Schema01!"
}
# 입력 후 excute를 눌러 저장

 

{
  "id": 2,
  "item": "Example Schema02!"
}
# 입력 후 excute를 눌러 저장
{
  "id": 3,
  "item": "Example Schema03!"
}
# 입력 후 excute를 눌러 저장

 

 

2) GET /todo Retrive Todos 부분의 try it out 을 누르고 Excute를 누르면 위에서 입력한 3개의 데이터가 출력된다.

 

현재 출력된 결과를 보면 id와 item이 동시에 출력된다.  이것을 item만 출력되도록 응답 모델을 만들어 수정하자.

 

2. id 없이 item만 반환하도록 TodoItems 모델 model.py에 추가하기

1)  typing에서 List 를 임포트하고 TodoItems 클래스 작성한다.

# typing에서 List 임포트
from typing import List
# model.py
# TodoItems 클래스 추가

class TodoItems(BaseModel):
    todos: List[TodoItem]

    class Config:
        json_schema_extra = {
            "example" : {
                "todos" : [
                    {
                        "item" : "Example schema 1!"
                    },
                    {
                        "item" : "Example schema 2!"
                    }
                ]          
            }
        }

 

 

2) todo.py 에 있는 라우트에 model에서 정의한 TodoItems 클래스를 임포트하고 retrive_todo 함수의 라우터에 추가한다.

from model import Todo, TodoItem, TodoItems  #TodoItems 임포트 추가


@todo_router.get("/todo", response_model=TodoItems)  # response_model=TodoItems 추가 
async def retrive_todos() -> dict:
    return {
        "todos" : todo_list
    }

 

 

3) 서버 실행 후 응답모델 테스트

위의 Todo list 출력하기에서 했던 것 처럼 서버 실행 후 docs의 post /todo 부분의 try it out 에서 샘플 데이터 3번 입력한다.

{
  "id": 1,
  "item": "Example Schema01!"
}
# 입력 후 excute를 눌러 저장 2, 3번째도 동일

 

 

GET /todo Retrive Todos 부분의 try it out 을 누르고 Excute를 누르면 위에서 입력한 3개의 데이터가 출력되는데 처음과 다르게 id없이 item만 출력 되는 것을 확인 할 수 있다.

 

 

 

 

출처: 아데시나, 압둘라지즈 압둘라지즈. FastAPI를 사용한 파이썬 웹 개발. 번역 김완섭. 한빛미디어, 2023