반응형
BaseDTO 클래스는 Pydantic 라이브러리의 BaseModel을 상속하여 데이터 전송 객체(DTO)를 정의하는 데 사용됩니다. 이 클래스는 FastAPI 같은 프레임워크에서 데이터 검증 및 직렬화/역직렬화를 쉽게 하기 위해 사용됩니다. Pydantic 모델은 데이터를 정의하고 유효성을 검사하는 데 매우 유용합니다.
코드 설명
from pydantic import BaseModel
from typing import Optional
class BaseDTO(BaseModel):
class Config:
orm_mode = True
use_enum_values = True
1. BaseDTO(BaseModel):
- BaseDTO는 **Pydantic의 BaseModel**을 상속받아 생성되었습니다.
- BaseModel은 데이터 유효성 검사와 데이터 직렬화/역직렬화를 담당합니다. FastAPI와 같은 프레임워크에서 요청/응답 데이터를 처리할 때 사용됩니다.
2. class Config:
- Config 클래스는 Pydantic 모델의 동작 방식을 조정하는 설정을 정의합니다.
- 이 설정을 통해 Pydantic 모델이 ORM과 상호작용하거나 특정 동작을 수행하는 방식을 제어할 수 있습니다.
3. orm_mode = True:
- 이 설정은 Pydantic이 ORM(Object Relational Mapping) 모델과 함께 사용할 때 유용합니다.
- ORM에서 반환된 객체는 보통 딕셔너리가 아니며, 속성 접근이 dictionary 대신 객체 속성으로 이루어집니다. orm_mode가 True이면, Pydantic은 ORM에서 반환된 객체의 속성을 그대로 읽을 수 있게 됩니다.
- 예를 들어, SQLAlchemy의 ORM 모델을 반환할 때, 이 설정이 활성화되면 Pydantic은 ORM 객체의 속성에 접근하여 데이터를 추출합니다.
4. use_enum_values = True:
- 이 설정은 Pydantic이 열거형(enum) 값을 처리할 때 사용됩니다.
- use_enum_values가 True이면, 열거형의 값을 사용하여 직렬화합니다. 즉, 열거형 객체 대신 해당 값이 반환됩니다.
- 예를 들어, 열거형이 Enum('STATUS', 'OPEN CLOSE')라면, 이 값을 사용해 데이터를 처리합니다.
요약:
- **BaseDTO**는 Pydantic 모델로, API 요청/응답의 데이터 전송을 간편하게 하기 위해 사용됩니다.
- **orm_mode = True**로 ORM 객체와도 쉽게 연동될 수 있으며, FastAPI 같은 프레임워크에서 ORM 모델을 직접 응답 모델로 사용할 수 있게 해줍니다.
- **use_enum_values = True**로 열거형(enum) 값을 실제 값으로 변환해 처리할 수 있습니다.
이 클래스는 데이터베이스에서 ORM으로 데이터를 가져오고, API 요청/응답으로 전달할 때 데이터를 검증하고 처리하는 데 매우 유용합니다.
반응형
댓글