1. 쿼리 매개변수 유효성 검사
1-1.Query
FastAPI에서 쿼리 매개변수(query parameters)는 URL에 포함된 데이터를 쉽게 받을 수 있도록 지원한다.
다음은 Query를 통해 쿼리 매개변수를 1~10의 범위로 제한하였다.
Query의 첫인자로 (...) 을 쓰면 필수로 받아야할 값이다.
## Query 클래스를 사용하여 쿼리 매개변수 유효성 검사
@app.get("/items2/")
async def get_item(name: str, price: float, limit: int = Query(..., ge=1, le=10)):
return {"name": name, "price": price, "limit": limit}
http://127.0.0.1:8000/items2/?name=asd&price=1.0&limit=1
{
"name": "asd",
"price": 1,
"limit": 1
}
# 범위 초과
http://127.0.0.1:8000/items2/?name=asd&price=1.0&limit=11
{
"detail": [
{
"type": "less_than_equal",
"loc": [
"query",
"limit"
],
"msg": "Input should be less than or equal to 10",
"input": "11",
"ctx": {
"le": 10
}
}
]
}
2.경로 매개변수 검사
2-1.Path
Path는 경로 매개변수에 대한 유효성 검사, 설명, 기본값 등을 설정할 수 있는 기능을 제공한다.
#5. 경로 매개변수 유효성 검사
@app.get("/items/{item_id}")
async def get_item(
item_id: int = Path(..., ge=1, le=100)
):
return {"item_id": item_id}
3.Field
Pydantic 모델 안에서 매개변수에 대한 검증 및 메타데이터도 한 번에 선언할 수 있게한다.
class PaginationParams(BaseModel):
page: int = Field(1, ge=1)
size: int = Field(10, gt=0, le=100)
sort_by: Literal["name", "date", "price"] = "date"
filter: str = Field("", max_length=50)
@app.get("/products/")
async def read_products(pagination: Annotated[PaginationParams, Query()]):
return pagination
반응형
'BackEnd > FastAPI' 카테고리의 다른 글
[FASTAPI] 웹소켓 (WebSocket) (1) | 2025.01.16 |
---|---|
[FastAPI] 요청 본문(Request Body) (0) | 2025.01.03 |
[FastAPI] 매개변수 (0) | 2025.01.02 |