使用FastAPI的POST方法中的问号返回404错误

问题描述 投票:0回答:1

您能否向我解释一下为什么在 FastAPI 中可以实现以下功能:

@app.post("/items/v1/cards{sku}")
async def create_item(sku: str):
    return {"status":200,"sku":sku}  # returns status:200 and sku 

但是,像下面给出的那样,带有问号的相同端点却没有?

@app.post("/items/v1/cards?{sku}")
async def create_item(sku: str):
    return {"sku":sku}  # returns 404
python http fastapi http-status-code-404 query-string
1个回答
0
投票

first代码片段中,您将参数定义为Path参数并按预期工作。

@app.post('/items/v1/cards/{sku}')
async def create_item(sku: str):
    return {'sku': sku} 

网址示例:

http://127.0.0.1:8000/items/v1/cards/something

但是,在第 第二个 中,您尝试以错误的方式传递查询参数。根据文档

当您声明属于的其他函数参数时 路径参数,它们自动解释为“查询” 参数。

因此,您的端点应如下所示:

@app.post('/items/v1/cards')
async def create_item(sku: str):
    return {'sku': sku}

查询是 URL 中

?
之后的一组键值对, 用
&
字符分隔。

网址示例:

http://127.0.0.1:8000/items/v1/cards?sku=something
© www.soinside.com 2019 - 2024. All rights reserved.