python 无法使用FastAPI访问或打印任何请求数据

fumotvh3  于 2023-03-16  发布在  Python
关注(0)|答案(1)|浏览(490)

我有一个简单的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

我无法使用postput打印任何内容:

@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错误。
我怎样才能把这个修好?

rslzwgfq

rslzwgfq1#

405 Method Not Allowed状态代码指示 “服务器知道请求方法,但目标资源不支持此方法"。例如,尝试将POST请求发送到GET路由时,会出现此错误(如第一个示例所示)。但是,并不是您的代码的唯一问题(在客户端和服务器端)。下面给出了一个例子,说明如何使用Path parameters实现您在问题中所描述的内容。使用Query parameters也可以实现相同的功能。以及Request Body。请查看Python requests documentation,了解如何为每种情况指定参数/主体。我还强烈建议在线学习FastAPI tutorial-您将在那里找到您正在寻找的大多数答案。

应用程序.py

from fastapi import FastAPI

app = FastAPI()

@app.get("/ping/{ping_id}")
async def get_trigger(ping_id: str):
    return {"ping_id": ping_id}

测试.py

import requests

url = 'http://127.0.0.1:8000/ping/test1'
resp = requests.get(url=url) 
print(resp.json())

相关问题