Pydantic
2024. 4. 2. 18:29ㆍBack-end/FastAPI
[점프 투 FastAPI] 2-04-3 Pydantic으로 입출력 스펙을 정의한다.
Pydantic에 대해 왜 사용하고 어떤 기능을 하는지 자세히 알아보자.
Pydantic
- Request, Response 모델 정의.
- type annotation으로 데이터 검증과 설정 관리.
- 입출력 항목의 개수와 타입 설정.
- 입출력 항목의 필수값 체크.
- 유저 친화적 에러 제공.
- parsing 라이브러리로, 입력값을 정의된 타입으로 변환하여 모델의 타입과 제약 조건 보장.
- JSON이나 dict 변환 가능.
BaseModel
아래와 같이 타입을 정의하고 설정한 타입과 일치하지 않으면 에러를 발생시킨다.
UUID(Universally Unique IDentifier) : 고유성 보장, 주로 db의 Primary Key로 사용.
import datetime
from pydantic import BaseModel
from uuid import UUID
class Question(BaseModel):
id: UUID
subject: str
content: str
create_date: datetime.datetime
Field
https://docs.pydantic.dev/latest/concepts/fields/
Fields - Pydantic
Fields API Documentation pydantic.fields.Field The Field function is used to customize and add metadata to fields of models. Default values The default parameter is used to define a default value for a field. from pydantic import BaseModel, Field class Use
docs.pydantic.dev
- 별칭 사용
from pydantic import BaseModel, Field
class User(BaseModel):
name: str = Field(..., alias='username')
user = User(username='johndoe')
print(user)
#> name='johndoe'
print(user.model_dump(by_alias=True))
#> {'username': 'johndoe'}
- 숫자 크기 제약(gt:초과, lt:미만, ge:이상, le:이하, multiple_of:배수, allow_inf_nan:'-inf', 'nan'값 허용)
- 문자열 제약(min_length:최소 길이, max_length:최대 길이, pattern:정규식)
- Decimal 제약(max_digits:전체 최대 자릿수, decimal_places:최대 소수 자릿수)
- 제약에 위반되는 값을 입력하면 에러 발생.
- 기타(데이터 클래스, 기본값 검증, 판별자 등) 관련 내용들이 있지만 현 단계에서는 아직 필요하지 않은 내용인 듯하여 나중에 필요해지면 찾아보자.
'Back-end > FastAPI' 카테고리의 다른 글
| 의존성 주입_Depends (1) | 2024.03.30 |
|---|