실무에서 내가 너무 모르고 쓰고 있는 것 같아서 pydantic 문서를 자세히 읽어보기로 했다.
FastAPI 프레임워크에서 pydantic은 Data Validation을 위해 사용한다. 백엔드에서 Data Validation이 필요한 이유는 다음 문서를 참고했다.
Backend Data Validations and Why You Need Them
Backend Validations
Irrespective of front end technology and framework, your back end will eventually end up receiving a data request. Every bit of data submitted by your user has to be validated on your back end. Discard any information that you can obtain by querying your underlying data sources and keep only what is intrinsic to the actual request being handled.
프론트엔드의 기술과 프레임워크에 관계없이 백엔드는 결국 데이터 요청을 받게 될 것이다. 사용자로부터 받은 모든 데이터들은 백엔드에서 검증 되어야만 한다. 기본 데이터 소스를 쿼리하여 얻을 수 있는 정보를 버리고 처리중인 실제 요청에 내재된 정보만 유지한다.
Implementing back end validation checks guarantees that any kind of malicious request has the chance to be re-checked in an environment you control.
백엔드 유효성 검사를 수현하는 것은 당신이 제어하는 환경에서 모든 종류의 잘못된 요청이 재확인 될 수 있는 기회를 보장한다.
In conclusion, never trust your user and always perform back end data validation checks.
결론적으로 절대 사용자를 믿지 말고 (사용자가 보내는 요청 데이터를 믿지 말라는 의미) 항상 백엔드 데이터 유효성 체크를 수행해라.
1. Overview
Data validation and settings management using python type annotations. pydantic enforces type hints at runtime, and provides user friendly errors when data is invalid. Define how data should be in pure, canonical python; validate it with pydantic.
데이터 유효성 검사 및 python type annotations를 사용한 설정 관리. pydantic은 런타임에 type 힌트를 적용하고 데이터가 유효하지 않을 때 사용자에게 친숙한 형식의 에러를 제공한다. 데이터가 순수하고 표준적인 python인지를 정의할 때 pydantic을 사용해라.
2. Models
The primary means of defining objects in pydantic is via models (models are simply classes which inherit from BaseModel).
pydantic에서 object를 정의하는 주요 수단은 모델을 통한 것이다 (여기서 모델은 간단하게 BaseModel을 상속하는 class를 의미한다)
- 사용방법: pydantic-docs.helpmanual.io/usage/models/
3. Field Types
- pydantic-docs.helpmanual.io/usage/types/#standard-library-types