[FastAPI] Query 매개변수

JeongChaeJin·2022년 7월 27일
0
  • 제일 많이 쓰는 매개 변수다.
from fastapi import FastAPI

app = FastAPI()


@app.get("/users")
def get_user(limit: int):
    return {"limit": limit}
  • 위와 같은 API 가 있다고 해보자.

  • 여기서 유의할점은 ?으로 매개변수에 전달한다는 것이다.
  • 그런데 매개변수로 안주면 에러가난다.
from fastapi import FastAPI

app = FastAPI()


@app.get("/users")
def get_user(limit: int = None):
    return {"limit": limit}
  • 이런 것을 변수(limit)을 Optional하게 한다고 한다.
  • 이러면 ? 없어도 limit이 null로 잘 전달된다.
from typing import Optional
from fastapi import FastAPI

app = FastAPI()


@app.get("/users")
def get_user(limit: Optional[int] = None):
    return {"limit": limit}
  • 보통 사용하지 않아도 정상 작동되지만 Optional을 통해 확실히 표시해주는 것이 좋다.
  • FastAPI는 경로에 매개변수가 없으면 쿼리 매개변수로 함수 매개변수를 받는다.
  • 그리고 bool 형 자료형에 대해서는 on, yes, True, true 모두 1로 인식하여 잘 처리한다.
from typing import Optional
from enum import Enum
from fastapi import FastAPI

app = FastAPI()


class UserLevel(str, Enum):
    a = "a"
    b = "b"
    c = "c"


@app.get("/users")
def get_user(grade: UserLevel):
    return {"grade": grade}
  • 이런식으로 UserLevel의 Type도 지정할 수 있는데 Enum과 str을 이용한다. (다중 상속)
  • 다만, 이 경우에는 a, b, c 밖에 안된다.

  • a나 b,c는 되는데

  • d에서는 에러가 나는 것을 확인했다.
  • 이런거는 docs에서 더 명확하게 이해할 수 있으니 접속해보는 것이 좋다.

  • 해당의 경우에도 기본 값으로 UserLvel.a 등을 주면 Optional이 가능해진다.
profile
OnePunchLotto

0개의 댓글