반응형
실제 path에는 없지만 쿼리에 사용되는 파라미터를 의미합니다.
from typing import Union
from fastapi import FastAPI, Query
app = FastAPI()
@app.get("/items/")
async def read_items(q: Union[str, None] = Query(default=None, max_length=50)):
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
if q:
# 입력 된 q를 그냥 표시만 추가함
results.update({"q": q})
return results
결과는 이렇게 나오게 됩니다.
만약에 q를 필수 항목으로 두고 싶다면 아래와 같이 작성해줍니다.
from fastapi import FastAPI, Query
from pydantic import Required
app = FastAPI()
@app.get("/items/")
async def read_items(q: str = Query(default=Required, min_length=3)):
results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]}
if q:
results.update({"q": q})
return results
# {"detail":[{"loc":["query","q"],"msg":"field required","type":"value_error.missing"}]}
쿼리에는 다양한 인자를 추가 할 수 있습니다.
# Query 추가적인 매개변수들
Query(
default=None,
alias="item-query",
title="Query string",
description="Query string for the items to search in the database that have a good match",
min_length=3,
max_length=50,
regex="^fixedquery$",
deprecated=True,
)
해당 인자들은 아래와 같이 docs에 자동으로 적용되어 보여지게 됩니다.
마지막으로 숫자에대한 검증입니다.
from fastapi import FastAPI, Path, Query
app = FastAPI()
@app.get("/items/{item_id}")
async def read_items(
*,
item_id: int = Path(title="The ID of the item to get", ge=0, le=1000),
q: str,
size: float = Query(gt=0, lt=10.5)
):
results = {"item_id": item_id}
if q:
results.update({"q": q})
return results
그리고 숫자 검증 또한 선언할 수 있습니다:
- gt: 크거나(greater than)
- ge: 크거나 같은(greater than or equal)
- lt: 작거나(less than)
- le: 작거나 같은(less than or equal)
반응형
'Fastapi' 카테고리의 다른 글
FastAPI 자습서 스터디 기록 (Response Model) (0) | 2022.06.14 |
---|---|
FastAPI 자습서 스터디 기록 (Header Parameters) (0) | 2022.06.12 |
FastAPI 자습서 스터디 기록 (Multiple Parameters, Nested Models) (0) | 2022.06.12 |
FastAPI 자습서 스터디 기록 (Request Body, Pydantic) (0) | 2022.06.12 |
FastAPI 자습서 스터디 기록 (설치 및 경로 매개변수, 쿼리 매개변수) (0) | 2022.06.12 |
댓글