728x90
반응형
주요 데이터 타입 예시
- UUID: 전역적으로 고유한 식별자, 문자열로 표현
- Universally Unique Identifier
- 주로 데이터베이스 및 시스템에서 고유 ID로 사용
- 32개의 16진수 문자로 표현되며, 8-4-4-4-12 형식의 다섯 그룹으로 구분
- request와 response에서는 string으로 나타냄
- ex) 123e4567-e89b-12d3-a456-426614174000
- datetime.datetime
- 날짜와 시간, ISO 8601 형식의 문자열로 표현
- request와 response에서는 string으로 나타냄
- ex) 2008-09-15T15:53:00+05:00
- datetime.date
- 날짜, ISO 8601 형식의 문자열로 표현
- request와 response에서는 string으로 나타냄
- ex) 2008-09-15
- datetime.time
- 시간, ISO 8601 형식의 문자열로 표현
- request와 response에서는 string으로 나타냄
- ex) 14:23:55.003
- datetime.timedelta
- 시간 간격, 초 단위의 부동 소수점 수로 표현
- request와 response에서는 float으로 나타냄
- frozenset
- 변경 불가능한 집합(set) 타입
- 요소들이 중복되지 않음을 보장(중복된 데이터가 자동으로 제거되고, 응답 시 고유한 요소만 포함)
- ex) tags: frozenset[str] = frozenset()
- "tags" = ["tag1", "tag2", "tag1"] 이라는 요청이 들어오면 중복된 값이 제거되어 "tag" = ["tag1", "tag2"]가 됨
- bytes: 바이너리 데이터, 문자열로 취급
- Decimal: 고정 소수점 숫자, 부동 소수점 숫자로 처리
from datetime import datetime, time, timedelta
from typing import Annotated
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: Annotated[datetime, Body()],
end_datetime: Annotated[datetime, Body()],
process_after: Annotated[timedelta, Body()],
repeat_at: Annotated[time | None, 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,
"process_after": process_after,
"repeat_at": repeat_at,
"start_process": start_process,
"duration": duration,
}
https://fastapi.tiangolo.com/tutorial/extra-data-types/
728x90
반응형
'Programming Language > Python' 카테고리의 다른 글
[FastAPI] 11. JSON 호환 인코더: jsonable_encoder (0) | 2024.06.20 |
---|---|
[FastAPI] 10. Form Data & Request File (0) | 2024.06.20 |
[FastAPI] 8. Fields (0) | 2024.06.19 |
[FastAPI] 7. Body Parameter (0) | 2024.06.19 |
[FastAPI] 6. Path Parameters (Annotated, Path, *) (0) | 2024.06.19 |