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

x33g5p2x  于 2023-01-16  发布在  Python
关注(0)|答案(1)|浏览(229)

您能否向我解释一下为什么在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
huus2vyu

huus2vyu1#

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

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

URL示例:

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

但是,在第二个中,您试图以错误的方式传递Query parameter
当你声明其他函数参数时,如果这些参数不是路径参数的一部分,它们会被自动解释为“查询”参数。
因此,您的端点应如下所示:

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

查询是URL中?之后的键值对集,由&字符分隔。
URL示例:

http://127.0.0.1:8000/items/v1/cards?sku=something

相关问题