일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- pytorch
- Stream
- Kaggle
- MATLAB
- study book
- Computer Architecture
- DART
- ARM
- rao
- bloc
- C++
- PCA
- Algorithm
- BAEKJOON
- FastAPI
- 파이토치 트랜스포머를 활용한 자연어 처리와 컴퓨터비전 심층학습
- Widget
- Flutter
- BOF
- system hacking
- BFS
- llm을 활용 단어장 앱 개발일지
- fastapi를 사용한 파이썬 웹 개발
- Dreamhack
- MDP
- Image Processing
- 백준
- Got
- 영상처리
- ML
- Today
- Total
Bull
[FastAPI] Pydantic 모델 | study book 본문
Pydantic
pydantic은 파이썬의 타입 어노테이션을 이용해서 요청 바디의 검증을 할 수 있다. 요청 데이터를 검증하고 악의적인 공격을 줄여주기 때문이다.
데이터 모델링
Pydantic은 BaseModel
클래스를 기반으로 데이터 모델을 정의한다. 모델 클래스 내에 속성을 정의하고, 각 속성에 타입 힌트를 부여하면 Pydantic이 자동으로 유효성을 검사하고 변환한다.
from pydantic import BaseModel
class User(BaseModel):
id: int
name: str
signup_ts: Optional[datetime] = None
friends: List[int]
유효성 검사 및 타입 변환
Pydantic은 지정된 타입에 따라 입력 데이터를 자동으로 변환하거나, 타입이 맞지 않는 경우 오류를 발생시킨다. 예를 들어, int
로 정의된 필드에 문자열 "123"
이 입력되면, Pydantic은 이를 int
로 변환한다.
user = User(id='123', name='John Doe', friends=['1', '2', '3'])
print(user.id) # 123 (str이 int로 변환됨)
print(user.friends) # [1, 2, 3] (각 요소가 int로 변환됨)
데이터 유효성 검사
데이터의 형식뿐만 아니라 값의 유효성도 검사할 수 있다. 예를 들어, 문자열 길이, 정수 범위, 리스트의 요소 개수 등 다양한 조건을 정의할 수 있다.
from pydantic import BaseModel, constr, conint
class Product(BaseModel):
name: constr(min_length=3)
price: conint(ge=0)
타입 어노테이션의 강력함
Pydantic은 Python의 타입 힌팅을 적극 활용하여 복잡한 데이터 구조도 쉽게 다룰 수 있게 해준다. 중첩된 데이터 구조나 다양한 데이터 타입을 포함한 모델을 정의할 수 있다.
class Address(BaseModel):
street: str
city: str
class User(BaseModel):
name: str
address: Address
메소드 요청 - POST
대표적으로 GET, POST, UPDATE, DELETE 요청 등이 있지만 POST 같은 경우 body로 요청하기 때문에 pydantic 모델로 요청을 보내게 되면 json 형태로 반환해야 하기 때문에 http 요청 헤더에서 Content-Tpye
을 json으로 설정해주어야 한다.
curl -X POST \
-H "accept: application/json" \
-H "Content-Type: application/json" \
-d '{"key1": "value1", "key2": "value2"}' \
https://api.example.com/endpoint
참고 자료
https://product.kyobobook.co.kr/detail/S000201188332
FastAPI를 사용한 파이썬 웹 개발 | 압둘라지즈 압둘라지즈 아데시나 - 교보문고
FastAPI를 사용한 파이썬 웹 개발 | FastAPI의 핵심 기능과 5가지 기술 스택(몽고DB, 도커, pydantic, SQLModel, pytest)으로 이벤트 플래너 애플리케이션을 처음부터 끝까지 완성해본다!이 책의 강점은 ‘이
product.kyobobook.co.kr
'Software Framework > FastAPI' 카테고리의 다른 글
[FastAPI] 쿼리 매개변수 | study book (0) | 2024.08.20 |
---|---|
[FastAPI] 라우팅 | study book (0) | 2024.08.20 |