Programming Language/Python

[FastAPI] 9. Extra Data Types

LeeJaeJun 2024. 6. 19. 20:18
728x90
반응형

주요 데이터 타입 예시

  1. UUID: 전역적으로 고유한 식별자, 문자열로 표현
    • Universally Unique Identifier
    • 주로 데이터베이스 및 시스템에서 고유 ID로 사용
    • 32개의 16진수 문자로 표현되며, 8-4-4-4-12 형식의 다섯 그룹으로 구분
    • request와 response에서는 string으로 나타냄
    •  
    • ex) 123e4567-e89b-12d3-a456-426614174000
  2. datetime.datetime
    • 날짜와 시간, ISO 8601 형식의 문자열로 표현
    • request와 response에서는 string으로 나타냄
    • ex) 2008-09-15T15:53:00+05:00
  3. datetime.date
    • 날짜, ISO 8601 형식의 문자열로 표현
    • request와 response에서는 string으로 나타냄
    •  ex) 2008-09-15
  4. datetime.time
    • 시간, ISO 8601 형식의 문자열로 표현
    • request와 response에서는 string으로 나타냄
    •  ex) 14:23:55.003
  5. datetime.timedelta
    •  시간 간격, 초 단위의 부동 소수점 수로 표현
    • request와 response에서는 float으로 나타냄
  6. frozenset
    • 변경 불가능한 집합(set) 타입
    • 요소들이 중복되지 않음을 보장(중복된 데이터가 자동으로 제거되고, 응답 시 고유한 요소만 포함)
    • ex) tags: frozenset[str] = frozenset()
      • "tags" = ["tag1", "tag2", "tag1"] 이라는 요청이 들어오면 중복된 값이 제거되어 "tag" = ["tag1", "tag2"]가 됨
  7. bytes: 바이너리 데이터, 문자열로 취급
  8. 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/

 

Extra Data Types - FastAPI

FastAPI framework, high performance, easy to learn, fast to code, ready for production

fastapi.tiangolo.com

 

728x90
반응형