FrameWork/FastAPI
Pydantic & 스키마
mansoorrr
2024. 5. 26. 17:07
[Pydantic]
- FastAPI의 입출력을 정의, 데이터를 검증
- 입출력 항목의 갯수와 타입 설정
- 입출력 항목의 필수값 체크
- 입출력 항목의 데이터 검증
- Pydantic을 사용하기 위해 출력 스키마를 생성해야 함
[스키마]
- 출력 스키마는 해당 도메인에서 schema.py로 관리
- 데이터의 구조와 명세(출력항목 개수, 제약조건 등)
[사용방법: 스키마 만들기 > router에 적용 > api동작 확인]
1. 스키마 만들기
#---------- domain/question/question_schema.py
from pydantic import BaseModel
from datetime import datetime
class Question(BaseModel): #베이스모델 상속
#Question모델의 field들 중 보이고 싶은 field만 작성해 주기
id: int
subject: str
content: str
create_date: datetime
2. router에 적용
#---------- domain/question/question_router.py
from domain.question import question_schema
#response_model로 해당 api에서 출력되는 데이터는 question_schema.Question의 모양을 따르는 리스트 형태
@router.get('/list', response_model=list[question_schema.Question])
def question_list(db: Session=Depends(get_db)):
question_list = db.query(Question).order_by(Question.created_date.desc())
return question_list