![](/img/trans.png)
[英]FastAPI POST - Error 422 detail'': ( ( loc'':(body file msg'':field required'', type'': value_error missing)))
[英]Why am I getting {"detail":[{"loc":["path","id"],"msg":"field required","type":"value_error.missing"}]} if I made query with params?
這是不起作用的端點:
@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)
這是當我從交互式 FastAPI 文檔運行查詢時服務器顯示的內容:
INFO: 127.0.0.1:45806 - "GET /api/v1/questions/%7Bquestion_id%7D HTTP/1.1" 422 Unprocessable
我不知道為什么它在這里發送{question_id}
而不是數字。
此外,當我從 curl 運行查詢時,服務器顯示如下:
INFO: 127.0.0.1:59104 - "GET /api/v1/questions/21 HTTP/1.1" 422 Unprocessable Entity
這沒有意義,因為我發送的是唯一需要的參數: (question_id)
另一個端點工作正常:
@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()
路徑字符串中的路徑參數與 function 參數不匹配。 將 function 參數重命名為question_id
@router.get(
"/{question_id}",
tags=["questions"],
status_code=status.HTTP_200_OK,
response_model=Question,
dependencies=[Depends(get_db)],
)
def get_question(question_id: int = Path(..., gt=0)):
return get_question_service(question_id)
或id
的路徑參數:
@router.get(
"/{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)
順便說一句, Path
中的...
可以省略。 id: int = Path(gt=0)
等同於id: int = Path(gt=0)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.