1. kwargs 와 type 힌트를 통해 queryparameter 를 사용할 수 있다.
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]
2. Optional의 경우엔 어떻게?
@app.get("/items/{item_id}")
async def read_item(item_id: str, q: str | None = None):
if q:
return {"item_id": item_id, "q": q}
return {"item_id": item_id}
3. multiple path and query parameter 는 특정 순서로 선언할 필요는 없다.
@app.get("/users/{user_id}/items/{item_id}")
async def read_user_item(
user_id: int, item_id: str, q: str | None = None, short: bool = False
):
item = {"item_id": item_id, "owner_id": user_id}
if q:
item.update({"q": q})
if not short:
item.update(
{"description": "This is an amazing item that has a long description"}
)
return item
4. required query parameter는 default value 를 설정하지 않으면 된다.
@app.get("/items/{item_id}")
async def read_user_item(item_id: str, needy: str):
item = {"item_id": item_id, "needy": needy}
return item
물론 어떤 param 은 필수값이고 어떤 건 옵셔널하다면 다음과 같이 선언해도 된다.
@app.get("/items/{item_id}")
async def read_user_item(
item_id: str, needy: str, skip: int = 0, limit: int | None = None
):
item = {"item_id": item_id, "needy": needy, "skip": skip, "limit": limit}
return item
'FastAPI' 카테고리의 다른 글
FastAPI - Query Parameter에 Custom Validate 적용하기 (0) | 2023.09.02 |
---|---|
FastApi 사용하면서 기록할 것들 (0) | 2023.08.30 |
Annotated (0) | 2023.08.03 |
FastAPI - PathParameter (0) | 2023.08.02 |
FastAPI 시작하기 - 개발환경 세팅 (0) | 2023.08.01 |