FastAPI
Annotated
r잡초처럼
2023. 8. 3. 11:10
Annotated를 활용해 Type hint에 대한 Metadata를 설정해 보자
정의
typing.Annotated란 해당 타입에 대한 메타데이터를 제공해 준다.
사용법
- 예를 들어 다음과 같이 사용할 수 있다
T1 = Annotated[int, ValueRange(-10, 5)]
T2 = Annotated[T1, ValueRange(-20, 3)]
- Annotated는 첫 번째 인자는 유효한 자료형이어야 한다. T2와 같이 가변인자도 지원한다.
- 또한 위와 같이 여러 개의 형 주석이 지원된다.
Annotated[int, ValueRange(3, 10), ctype("char")]
- Annotated는 최소한 두 개의 인자로 호출해야 한다.
# error
num: Annotated[int]
# Good
num: Annotated[int, "숫자"]
- FastAPI에선 Query와 같이 사용하여 다음과 같이 validate도 할 수 있다.
from typing import Annotated
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items/")
async def read_items(q: Annotated[str | None, Query(max_length=50)] = None):
...
참고
1. https://docs.python.org/ko/3.9/library/typing.html#typing.Annotated
typing — 형 힌트 지원 — Python 3.9.17 문서
typing — 형 힌트 지원 소스 코드: Lib/typing.py 참고 파이썬 런타임은 함수와 변수 형 어노테이션을 강제하지 않습니다. 형 어노테이션은 형 검사기, IDE, 린터(linter) 등과 같은 제삼자 도구에서 사용
docs.python.org
2. https://fastapi.tiangolo.com/tutorial/query-params-str-validations/#__tabbed_2_1