fromtypingimportUnionfromfastapiimportFastAPIapp=FastAPI()@app.get("/items/{item_id}")asyncdefread_item(item_id:str,q:Union[str,None]=None,short:bool=False):item={"item_id":item_id}ifq:item.update({"q":q})ifnotshort:item.update({"description":"This is an amazing item that has a long description"})returnitem
이 경우, 아래로 이동하면:
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입니다.
여러 경로 매개변수와 쿼리 매개변수를 동시에 선언할 수 있으며 FastAPI는 어느 것이 무엇인지 알고 있습니다.
그리고 특정 순서로 선언할 필요가 없습니다.
매개변수들은 이름으로 감지됩니다:
fromtypingimportUnionfromfastapiimportFastAPIapp=FastAPI()@app.get("/users/{user_id}/items/{item_id}")asyncdefread_user_item(user_id:int,item_id:str,q:Union[str,None]=None,short:bool=False):item={"item_id":item_id,"owner_id":user_id}ifq:item.update({"q":q})ifnotshort:item.update({"description":"This is an amazing item that has a long description"})returnitem