관리 메뉴

Bull

[FastAPI] Pydantic 모델 | study book 본문

Software Framework/FastAPI

[FastAPI] Pydantic 모델 | study book

Bull_ 2024. 8. 20. 18:51

Pydantic

pydantic은 파이썬의 타입 어노테이션을 이용해서 요청 바디의 검증을 할 수 있다. 요청 데이터를 검증하고 악의적인 공격을 줄여주기 때문이다.

데이터 모델링

Pydantic은 BaseModel 클래스를 기반으로 데이터 모델을 정의한다. 모델 클래스 내에 속성을 정의하고, 각 속성에 타입 힌트를 부여하면 Pydantic이 자동으로 유효성을 검사하고 변환한다.

from pydantic import BaseModel
class User(BaseModel):
    id: int
    name: str
    signup_ts: Optional[datetime] = None
    friends: List[int]

유효성 검사 및 타입 변환

Pydantic은 지정된 타입에 따라 입력 데이터를 자동으로 변환하거나, 타입이 맞지 않는 경우 오류를 발생시킨다. 예를 들어, int로 정의된 필드에 문자열 "123"이 입력되면, Pydantic은 이를 int로 변환한다.

user = User(id='123', name='John Doe', friends=['1', '2', '3'])
print(user.id)  # 123 (str이 int로 변환됨)
print(user.friends)  # [1, 2, 3] (각 요소가 int로 변환됨)

데이터 유효성 검사

데이터의 형식뿐만 아니라 값의 유효성도 검사할 수 있다. 예를 들어, 문자열 길이, 정수 범위, 리스트의 요소 개수 등 다양한 조건을 정의할 수 있다.

from pydantic import BaseModel, constr, conint
class Product(BaseModel):
    name: constr(min_length=3)
    price: conint(ge=0)

타입 어노테이션의 강력함

Pydantic은 Python의 타입 힌팅을 적극 활용하여 복잡한 데이터 구조도 쉽게 다룰 수 있게 해준다. 중첩된 데이터 구조나 다양한 데이터 타입을 포함한 모델을 정의할 수 있다.

class Address(BaseModel):
    street: str
    city: str

class User(BaseModel):
    name: str
    address: Address

메소드 요청 - POST

대표적으로 GET, POST, UPDATE, DELETE 요청 등이 있지만 POST 같은 경우 body로 요청하기 때문에 pydantic 모델로 요청을 보내게 되면 json 형태로 반환해야 하기 때문에 http 요청 헤더에서 Content-Tpye을 json으로 설정해주어야 한다.

curl -X POST \
	 -H "accept: application/json" \
     -H "Content-Type: application/json" \
     -d '{"key1": "value1", "key2": "value2"}' \
     https://api.example.com/endpoint

참고 자료

https://product.kyobobook.co.kr/detail/S000201188332

 

FastAPI를 사용한 파이썬 웹 개발 | 압둘라지즈 압둘라지즈 아데시나 - 교보문고

FastAPI를 사용한 파이썬 웹 개발 | FastAPI의 핵심 기능과 5가지 기술 스택(몽고DB, 도커, pydantic, SQLModel, pytest)으로 이벤트 플래너 애플리케이션을 처음부터 끝까지 완성해본다!이 책의 강점은 ‘이

product.kyobobook.co.kr

 

'Software Framework > FastAPI' 카테고리의 다른 글

[FastAPI] 쿼리 매개변수 | study book  (0) 2024.08.20
[FastAPI] 라우팅 | study book  (0) 2024.08.20