Pydantic은 FastAPI에서 많이 쓰는 구문 분석 라이브러리이다.
Pydantic의 공식문서에 적혀있는 바에 의하면 다음과 같다.
pydantic은 런타임에 유형 힌트를 적용하고 데이터가 유효하지 않을 때 사용자에게 친숙한 오류를 제공합니다.
https://pydantic-docs.helpmanual.io/
Pydantic을 쓸 때 얻을 수 있는 이점은 Type Hint를 제공해주는 것만으로도 자체적으로 데이터를 검증해주고 오류를 발생시켜준다는 것이다. 또한 모델에 정의한 필드 유형에 따라 출력 데이터의 유형을 보장해준다.
BaseModel
Pydantic의 BaseModel은 클래스 모델에 선언된 변수들의 타입을 검증해주고 그에 맞지 않다면 ValidationError를 발생시킨다.
from typing import Optional
from pydantic import BaseModel, EmailStr
class User(BaseModel):
id : int
email: EmailStr
password : str
username: str
is_active: Optional[bool] = True
User 클래스를 선언해주었다.
id는 int형으로 값을 받아야하고, password와 username은 str형으로 값을 받아야만 정상적으로 출력이 된다.
email의 경우에는 Pydantic에서 제공하는 타입인 EmailStr을 사용했다. EmailStr 외에도 Pydantic이 제공하는 Field Type이 많으니 찾아서 적절한 Type을 쓰면 된다.
is_active는 유저의 활성 여부를 나타내는 값인데, Optional을 이용해서 Type을 지정해주었다.
Optional을 사용한 경우에는 기본값을 지정할 수 있다. 위와 같은 경우에는 True를 기본값으로 지정해주어 is_active 값이 bool형으로 값이 들어오면 해당 값을 할당하고, 아니면 기본값이 출력된다.
필수적으로 받아야하는 값이 아니면 Optional을 사용하면 편리하게 Type을 선언할 수 있다.
Model Properties
BaseModel을 상속 받은 클래스의 경우에는 다음 메소드들을 사용할 수 있다.
| Methods | 기능 |
| dict() |
모델 내부의 필드와 값을 딕셔너리 형식으로 반환합니다.
|
| json() | 모델 내부의 필드와 값을 JSON 형식으로 반환합니다. |
| copy() | 모델의 복사본을 반환합니다. |
| parse_obj() | 모델을 통해 주어진 object를 분석해 반환한다. 만약 딕셔너리가 아니라면 에러를 발생시킨다. |
| parse_raw() | str, bytes를 JSON으로 구문 분석 후 모델을 통해 분석 후 반환한다. |
| parse_file() | parse_raw()와 비슷하게 동작하지만 file_path를 모델을 통해 분석 후 반환한다. |
| from_orm() | orm_mode가 True인 모델의 인스턴스를 반환한다. |
| schema() | 모델로부터 JSON schema를 나타내는 딕셔너리를 반환한다. |
| schema_json() | schema()를 JSON string으로 반환한다. |
| construct() | Validation이 없이 모델을 생성한다. (이미 검증되었거나 신뢰할 수 있을 때 효율적이고 빠르게 모델을 생성한다.) |
'백엔드 > FastAPI' 카테고리의 다른 글
| [FastAPI] FastAPI 스터디 #3 (0) | 2022.09.29 |
|---|---|
| [FastAPI] FastAPI 스터디 #2 (0) | 2022.07.08 |
| [FastAPI] FastAPI 스터디 #1 (0) | 2022.05.24 |