SMALL
반응형
공식문서를 번역한 내용입니다
https://fastapi.tiangolo.com/ko/tutorial/extra-data-types/
Extra Data Types - FastAPI
FastAPI framework, high performance, easy to learn, fast to code, ready for production
fastapi.tiangolo.com
지금까지 사용한 데이터 타입은 아래와 같다.
- int(정수형)
- float(실수형)
- str(문자열)
- bool(불리언)
다른 데이터 자료형
- UUID :
- ‘Universally Unique Identifier”`라고 하는 것인데, 표준적으로 많은 데이터베이스와 시스템에서 ID로 사용한다.
- 요청이나 응답에 대해서 str로 표현이 가능하다.
- datetime.datetime :
- 파이썬의 datetime.datetime (아래도 전부 같은 방식)
- 날짜, 시간 표준이 ISO 8601 포맷의 str로 표현이 가능하다. 예를 들어서 2008-09-15T15:53:00+0:00처럼 말이다.
- datatime.date :
- 마찬가지로 ISO 8601포맷의 str로 표현이 가능하다. ex) 2008-09-15
- datatime.time :
- 마찬가지로 ISO 8601포맷의 str로 표현이 가능하다. ex) 14:23:55.003
- datetime.timedelta :
- 요청이나 응답을 보낼때에는 float형태의 총 초(total seconds)로 표현된다.
- Pydantic 에서 "ISO 8601 time diff encoding"로 표현할 수 있다.
- frozenset :
- 요청이나 응답을 보낼때 set처럼 사용할 수 있다.
- 요청으로 리스트를 읽는데, 중복된 값을 제거하고 set으로 바꿔버린다.
- 응답에서는 set이 list로 바뀐다.
- 스키마를 만들때는 set으로 만들어진다.
- 요청이나 응답을 보낼때 set처럼 사용할 수 있다.
- byte :
- 요청이나 응답에서는 str로 다뤄진다.
- 문서화될 때에는 binary값으로 포맷된 str이 된다.
- Decimal :
- 요청이나 응답에서 float로 다뤄진다.
예시
아래는 위 자료형 중 일부를 매개변수로 사용한 경로 동작 예시이다.
from datetime import datetime, time, timedelta
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: datetime | None = Body(default=None),
end_datetime: datetime | None = Body(default=None),
repeat_at: time | None = Body(default=None),
process_after: timedelta | None = Body(default=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,
}
함수 내부의 매개변수는 본래의 데이터 자료형을 갖고 있기 때문에, 예를 들어 다음과 같이 일반적인 날짜 조작이 가능하다.
from datetime import datetime, time, timedelta
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: datetime | None = Body(default=None),
end_datetime: datetime | None = Body(default=None),
repeat_at: time | None = Body(default=None),
process_after: timedelta | None = Body(default=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,
}
반응형
LIST
'코딩 > FastAPI' 카테고리의 다른 글
FastAPI 배우기 - Header Parameters (0) | 2023.07.11 |
---|---|
FastAPI 배우기 - Cookie Parameters (0) | 2023.07.11 |
FastAPI 배우기 - Declare Request Example Data (0) | 2023.07.03 |
FastAPI 배우기 - Body - Nested Models (0) | 2023.07.03 |
FastAPI 배우기 - Body - Fields (0) | 2023.07.03 |