This is the endpoint that is not working:
@router.get(
"/{question_id}",
tags=["questions"],
status_code=status.HTTP_200_OK,
response_model=Question,
dependencies=[Depends(get_db)],
)
def get_question(id: int = Path(..., gt=0)):
return get_question_service(id)
This is what the server shows when I run the query from the interactive FastAPI docs:
INFO: 127.0.0.1:45806 - "GET /api/v1/questions/%7Bquestion_id%7D HTTP/1.1" 422 Unprocessable
I don't know why it is sending {question_id}
here instead of the number.
Also when I run a query from curl, this is what the server shows:
INFO: 127.0.0.1:59104 - "GET /api/v1/questions/21 HTTP/1.1" 422 Unprocessable Entity
It makes no sense since I'm sending the only required param: (question_id)
The other endpoint is working fine:
@router.get(
"/",
tags=["questions"],
status_code=status.HTTP_200_OK,
response_model=List[Question],
dependencies=[Depends(get_db)],
)
def get_questions():
return get_questions_service()
There is a mismatch between the path parameter in the path string and the function argument. Rename the function argument to
question_id
or the path parameter to
id
:Btw,
...
inPath
can be omitted.id: int = Path(gt=0)
is equivalent toid: int = Path(gt=0)