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