[FastAPI Docs] Query 매개변수

JeongChaeJin·2022년 8월 23일
0
from fastapi import FastAPI

app = FastAPI()

fake_items_db = [{"item_name": "Foo"}, {"item_name": "Bar"}, {"item_name": "Baz"}]


@app.get("/items/")
async def read_item(skip: int = 0, limit: int = 10):
    return fake_items_db[skip : skip + limit]
  • 경로 매개 변수가 아닌 함수 매개변수 선인 시 쿼리 매개 변수로 자동으로 해석한다.
http://127.0.0.1:8000/items/?skip=0&limit=10
  • ?과 &로 구분한다.
  • skip = 0, limit = 10
  • URL 일부 이므로 String이지만, Python에서 int로 선언했기 때문에 경로 매개 변수와 같은 프로세스가 쿼리 매개변수에도 적용되어 정상 변환이 된다.
  • 기본 값을 두면 값을 안주면 그대로다.

선택적 매개 변수

@app.get("/items/{item_id}")
async def read_item(item_id: str, q: Union[str, None] = None):
  • q 함수 매개변수는 None이므로 선택적이며 기본은 None 이다.
    • Union은 단지 편집기에서 코드 오류를 찾도록 도와주는 용도일 뿐 FastAPI는 str만 사용한ㄷ다.

쿼리 매개변수 형변환

async def read_item(item_id: str, q: Union[str, None] = None, short: bool = False):
  • http://127.0.0.1:8000/items/foo?short=1
  • http://127.0.0.1:8000/items/foo?short=True
  • http://127.0.0.1:8000/items/foo?short=true
  • http://127.0.0.1:8000/items/foo?short=on
  • http://127.0.0.1:8000/items/foo?short=yes
  • bool 형인 short가 알아서 True임을 인지할 수 있게 된다. 위 예시 외에는 False다.

여러 경로/쿼리 매개변수

@app.get("/users/{user_id}/items/{item_id}")
async def read_user_item(
    user_id: int, item_id: str, q: Union[str, None] = None, short: bool = False
  • 경로 매개변수, 쿼리 매개변수를 동시에 선언이 가능하며 FastAPI는 알아서 구분한다.

필수 쿼리 매개변수

@app.get("/items/{item_id}")
async def read_user_item(item_id: str, needy: str):
  • 쿼리 매개변수를 필수로 만들려면 기본값을 선언 안하면 된다.

  • needy는 string 타입의 필수 쿼리 매개변수인 것이다.

  • http://127.0.0.1:8000/items/foo-item 해당 URL에서는 Error

  • http://127.0.0.1:8000/items/foo-item?needy=sooooneedy

    • 필수 매개변수이므로 URL에도 반드시 설정해줘야된다.
  • 일부 매개변수는 필수, 다른 매개변수는 기본값 or 선택적으로 선언이 가능한 것이다.

profile
OnePunchLotto

0개의 댓글