Data Navigator

FastAPI 설치 환경 세팅 및 간단한 테스트 웹 만들기3 - pydantic 으로 유효성 검사하기 본문

FastAPI

FastAPI 설치 환경 세팅 및 간단한 테스트 웹 만들기3 - pydantic 으로 유효성 검사하기

코딩하고분석하는돌스 2024. 5. 3. 19:45

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

- pydantic 으로 유효성 검사하기, 입력값 샘플 등록하기 -

 

 

1. pydantic 으로 유효성 검사하기

Pydantic은 Python의 데이터 유효성 검사 라이브러리입니다. Pydantic은 Python의 타입 힌트를 활용하여 데이터 유효성 검사와 설정 관리를 자동화하는 강력한 라이브러리로, 개발자가 데이터 모델을 정의할 때 명확한 데이터 타입을 지정함으로써, Pydantic은 이 모델을 기반으로 데이터의 유효성을 자동으로 검증합니다.

 

2. pydantic으로 유효성 검사해서 입력 받도록 수정하기

1) todo 디렉토리에 model.py를 새로 만들고 pydantic의 basemodel 클래스를 상속받아 id와 item 속성을 지정하자

# model.py

from pydantic import BaseModel

class Todo(BaseModel):
	id : int
    item : str

 

 

2) todo.py 에 있는 add_todo 함수의 입력값을 model.py에서 정의한 Todo 클래스로 받도록 수정하기

# todo.py
@todo_router.post("/todo")
async def add_todo(todo: Todo) -> dict:
    todo_list.append(todo)
    return {
        "message" : "Todo added successfully."
    }

 

3) 서버 실행 후 localhost:8000/docs 에서 post /todo 에서 try it out 을 누르고 빈 딕셔너리를 전송해 보자.

 

 

Execute를 누르면 아래와 같이 에러가 나는 것을 확인 할 수 있다.

 

4) 이번에는 다시 try it out을 누르고 Request body에 {"id" : 1, "item" : "테스트"} 를 입력하고 Execute를 입력해 보자.

 

그러면 아래와 같이 정상적으로 200 응답이 뜨면서 "message" : "Todo added successfully" 가 출력된다.

 

3. 입력값 샘플 등록하기

1) JSON 스키마를 올바르게 생성하기 위해 model.py의 Todo class에 사용자가 입력해야 할 데이터의 샘플을 설정한다.

# model.py
from pydantic import BaseModel

class Todo(BaseModel):
    id : int
    item : str

    class Config:
        json_schema_extra = {
            "example" : {
                "id" : 1,
                "item" : "Example Schema!"
            }
        }

 

 

 

2) localhost:8000/docs에 들어가서 확인

post부분의 드롭다운 메뉴를 클릭하면 작성했던 예시가 보이는 것을 확인 할 수 있다.

 

 

 

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