본문 바로가기
Fast API/fastapi배우기

[FastAPI] 새롭게 추가된 Annotated

by 붕어사랑 티스토리 2023. 12. 11.
반응형

Annotated란 파이썬에서 타입에 대한 메타데이터를 추가해주는 기능이다.

 

사용방법은 다음과 같다

 

Annotated(타입명, 메타데이터)

 

 

 

대충 코드로 바로 들어가보자

from fastapi import FastAPI, Query

app = FastAPI()


@app.get("/items/")
async def read_items(q: str | None = Query(default=None, max_length=50)):
    results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
    if q:
        results.update({"q": q})
    return results

 

 

과거 우리가 쿼리나 패스파라미터에 대해 커스텀하게 다룰 때 Path 클래스나 Query클래스처럼 위와같이 작성하였다.

이를 Anotated를 이용하면 아래와 같이 된다.

 

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):
    results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
    if q:
        results.update({"q": q})
    return results

 

 

그리고 fastapi는 이제 위에처럼 코드를 작성하기를 권장한다

 

이유는 다음과 같다

 

  • 가독성에 이점이 있다. 우측에 들어가는 defaultValue는 실제 디폴트 값이다. 반면 이전에 사용하던 defaultValue는 Query(defaultValue=값) 이런식으로 값을 찾아서 읽어야 했다
  • FastAPI가 아닌 다른곳에서 함수를 호출해도 문제없이 돌아간다

 

고로 Annotated를 사용하자

반응형

댓글