我有一个简单的FastAPI端点,我想在这里接收一个字符串值。在本例中,我尝试了JSON主体,但基本上不需要是JSON。我实际上只需要一个简单的字符串来分隔请求。不幸的是,我不能使用GET
方法访问任何请求参数。我也尝试了POST
方法,但我得到了一个错误:
请求:
url = "http://127.0.0.1:5000/ping/"
payload=json.dumps({"key":"test"})
headers = {
"Content-Type": "application/json"
}
response = requests.request("POST", url, headers=headers, json=payload)
print(response.text)
API:
@app.get("/ping/{key}")
async def get_trigger(key: Request):
key = key.json()
test = json.loads(key)
print(test)
test2 = await key.json()
print(key)
print(test2)
return
我无法使用post
或put
打印任何内容:
@app.post("/ping/{key}")
async def get_trigger(key: Request):
...
or
@app.put("/ping/{key}")
async def get_trigger(key: Request):
我得到一个405 Method not allowed
错误。
我怎样才能把这个修好?
1条答案
按热度按时间rslzwgfq1#
405 Method Not Allowed
状态代码指示 “服务器知道请求方法,但目标资源不支持此方法"。例如,尝试将POST
请求发送到GET
路由时,会出现此错误(如第一个示例所示)。但是,并不是您的代码的唯一问题(在客户端和服务器端)。下面给出了一个例子,说明如何使用Path
parameters实现您在问题中所描述的内容。使用Query
parameters也可以实现相同的功能。以及Request Body
。请查看Python requests documentation,了解如何为每种情况指定参数/主体。我还强烈建议在线学习FastAPI tutorial-您将在那里找到您正在寻找的大多数答案。应用程序.py
测试.py