Pydantic 이란?

헨도·2022년 12월 27일
0

FastAPI

목록 보기
3/8
post-thumbnail

FastAPI

Pydantic

FastAPI가 설치된 로컬에서 다음 명령어를 사용하면 설치 목록을 볼 수 있다.

pip list

이 리스트 중 2가지에 집중한다.

  • Pydantic
  • starlette

위 2가지 리스트는 FastAPI를 설치하면 자동으로 같이 설치되는 라이브러리이다.

간단하게 소개하자면,
starlette은 FastAPI가 사용하는 웹 프레임워크이며,
Pydantic은 파이썬 타입 어노테이션 문법에 근거하여 데이터 검증을 해주는 라이브러리이다.

Pydantic 예시

from datetime import datetime
from typing import List, Optional
from pydantic import BaseModel

class User(BaseModel) :
	id : int
    name = 'Jun'
    signing_ts : Optional[datetime] = None
    friends = List[int] = []


external_data = {
	'id' : '123',
    'signing_ts' : '2022-01-01 12:00',
    'friends' : [1, 2, '3'],
}

user = User(**external_data)

위처럼 User라는 class에 데이터 형식을 적어준 후, external_data 안에 선언한 데이터 형식과 다른 데이터를 선언해주면 어떻게 될까?

print(user.id)

>>> 123

external_data 에서는 id 값을 문자열로 주었지만, 출력문에서는 정수형으로 바뀌었다.

print(user.friends)

>>> [1, 2, 3]

리스트 안에 있는 문자열이 정수형으로 변하였다.

그럼 모든 데이터를 딕셔너리 형태로 출력하겠다.

print(user.dict())

>>>
{
	'id' : 123,
    'name' : 'Jun',
    'signing_ts' : datetime.datetime(2022, 1, 1, 12, 00),
    'friends' : [1, 2, 3],
}

Pydantic 결론

위의 예시를 보며 느낀 것은 Pydantic은 단순히 타입 검사만 하는 것이 아닌 타입 변형(cast)까지 해준다.
그렇기에 문자열로 통신하는 HTTP 환경에서 도움을 받을 수 있다.

예를 들어,
GET user/123 을 호출할 시, 123은 실제 문자열이지만, 웹 어플리케이션은 문자열인지 정수형인지 알 수 없다.
이 때, Pydantic을 사용하면 개발자가 원하는 타입으로 받을 수 있다.

profile
Junior Backend Developer

0개의 댓글