반응형
지금까지 봐 온 데이터 타입은 아래와 같다.
- int
- float
- str
- bool
하지만 Fast API는 훨 씬 더 많은 데이터 타입을 제공한다.
- UUID:
- "Universally Unique Identifier"의 약자 이다., 많은 데이터베이스 시스템에서 id로 사용된다.
- request와 response는 전부 str로 표현된다.
- datetime.datetime:
- 파이썬의 datetime.datetime.
- request와 response에서 str로 표현된다. ISO 8601 format을 따른다. ex: 2008-09-15T15:53:00+05:00.
- datetime.date:
- 파이썬의 datetime.date.
- request와 response에서 str로 표현된다. ISO 8601 format을 따른다. ex: like: 2008-09-15.
- datetime.time:
- 파이썬의 datetime.time.
- request와 response에서 str로 표현된다. ISO 8601 format을 따른다. ex: format, like: 14:23:55.003.
- datetime.timedelta:
- 파이썬의 datetime.timedelta.
- request와 response에서 float으로 표현된다.
- Pydantic 에서 "ISO 8601 time diff encoding"로 표현할 수 있다.
- frozenset:
- request와 response에서 set으로 취급된다.
- request에서 list를 읽은뒤에 중복된 데이터를 제거하고 set으로 convert 해준다.
- response에서 set데이터는 list로 convert 된다.
- 생성된 스키마는 JSON Schema의 uniqueItems를 이용하여 set 값들을 고유하도록 만든다.
- request와 response에서 set으로 취급된다.
- bytes:
- 파이썬의 bytes.
- request와 response에서 float으로 표현된다.
- The generated schema will specify that it's a str with binary "format".
- Decimal:
- 파이썬의 Decimal.
- request와 response에서 float으로 표현된다.
아래는 위 데이터들을 활용한 예제이다.
파이썬의 기본 자료형처럼 연산이 가능한거에 주목
from datetime import datetime, time, timedelta
from typing import Optional
from uuid import UUID
from fastapi import Body, FastAPI
app = FastAPI()
@app.put("/items/{item_id}")
async def read_items(
item_id: UUID,
start_datetime: Optional[datetime] = Body(None),
end_datetime: Optional[datetime] = Body(None),
repeat_at: Optional[time] = Body(None),
process_after: Optional[timedelta] = Body(None),
):
start_process = start_datetime + process_after
duration = end_datetime - start_process
return {
"item_id": item_id,
"start_datetime": start_datetime,
"end_datetime": end_datetime,
"repeat_at": repeat_at,
"process_after": process_after,
"start_process": start_process,
"duration": duration,
}
반응형
'Fast API > fastapi배우기' 카테고리의 다른 글
Fast API 배우기 11부 - Response Model (0) | 2021.11.01 |
---|---|
Fast API 배우기 10부 - Cookie 파라미터, Header 파라미터 (1) | 2021.11.01 |
Fast API 배우기 8부 - Example Data 넣기 (0) | 2021.11.01 |
Fast API 배우기 7부 - Field 클래스 (5) | 2021.11.01 |
Fast API 배우기 6부 - Body 클래스 (0) | 2021.10.21 |
댓글