PathParameter
1. '{}' 를 쓰고 인자로 받으면 된다.
@app.get("/items/{item_id}")
async def read_item(item_id: int):
return {"item_id": item_id}
2. 만약 sub path 가 같고 뒤에 오는게 다르다면?
@app.get("/users/me")
async def read_user_me():
return {"user_id": "the current user"}
@app.get("/users/{user_id}")
async def read_user(user_id: str):
return {"user_id": user_id}
이럴 경우엔 path param이 me가 오는 경우 read_user_me()가 호출 되고, 다른 경우엔 read_user가 호출된다.
3. 만약 path param 에서 받아오는 값에 "/" 가 붙어있는 경우에는 어떻게 해야할까? 이때는 :path 를 붙여준다.
@app.get("/files/{file_path:path}") # :path 예를 들어 1/1.txt 로 요청해도 404 가 안뜬다
async def read_file(file_path: str):
return {"file_path": file_path}
4. 만약 path param 으로 받아오는 값을 choice하게 해야된다면? Enum을 이용하자
class ModelName(str, Enum):
alexnet = "alexnet"
resnet = "resnet"
lenet = "lenet"
@app.get("/models/{model_name}")
async def get_model(model_name: ModelName):
if model_name is ModelName.alexnet:
return {"model_name": model_name, "message": "Deep Learning FTW!"}
if model_name.value == "lenet":
return {"model_name": model_name, "message": "LeCNN all the images"}
return {"model_name": model_name, "message": "Have some residuals"}
'FastAPI' 카테고리의 다른 글
FastAPI - Query Parameter에 Custom Validate 적용하기 (0) | 2023.09.02 |
---|---|
FastApi 사용하면서 기록할 것들 (0) | 2023.08.30 |
Annotated (0) | 2023.08.03 |
QueryParameter (0) | 2023.08.02 |
FastAPI 시작하기 - 개발환경 세팅 (0) | 2023.08.01 |