#path parameter #query parameter
Path Parameter vs. Query parameter
PP, QP 로 간단하게 불러보면 좋지.
FastAPI 에서 위 둘은 개념적으로 차이가 존재함.
하지만,
Flask를 예로 위의 두 개념을 적용하려면 열심히 코딩을 하면
가능함.
사실,
왜 신경을 써야하는지 난 모르겠음. 누군가에게는 당연히 컨트롤 해야하는 중요한 작업이지.
여기서!
typing 을 통해서 상속받은 Optional 을 사용하면 정말 쉽게 만들 수 있음.
from typing import Optional
from fastapi import FastAPI
app = FastAPI()
@app.get("/item/3/{item_id}")
async def read_item(item_id: str, q: Optional[str] = None):
if q:
return {"item_id": item_id, "q": q}
return {"item_id": item_id}
우왕~! 쉽다.
이걸 스웨거를 통해서 보면,
여기서!
꼭 요구해야하는 파라미터와 선택적으로 요구되는 파라미터를 구분해보면,
@app.get("/item/4/{item_id}")
async def read_user_item(
item_id: str, required_x: str, optional_y: int = 0, optional_z: Optional[int] = None
):
item = {"item_id": item_id, "required_x": required_x,
"optional_y": optional_y, "optional_z": optional_z}
return item
스웨거로 확인!
위에 2개 (item_id: path parameter, required_x: query parameter) 는 필수!
아래 2개 (optional_y: query parameter, optional_z: query parameter) 는 선택!
Optional 구문을 잘 활용하면 좀 더 명확한 의미 전달이 될 것으로 보임.