簡體   English   中英

如果我進行查詢,為什么會得到 {"detail":[{"loc":["path","id"],"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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM