【问题标题】:Passing extra argument to Sanic's post向 Sanic 的帖子传递额外的论点
【发布时间】:2021-03-24 18:41:46
【问题描述】:

情况是我得到了某人离开我办公室的密码。他使用了 Sanic 框架。现在,客户要求进行一些更改。我必须向服务器发送额外的数据,这些数据将存储在数据库中,以后可以检索。

代码:

之前的代码是:

def send_update_to_server(v_Number, state, server_url):
  data = {'state': state}
  address_to_send = "http://{}/vote/{}".format(server_url, v_Number)
  r = requests.post(address_to_send, json=data)

所以,为了发送额外的数据,我添加了我想要发送的变量:

def send_update_to_server(v_Number, state, server_url, new_number):
  data = {'state': state}
  address_to_send = "http://{}/vote/{}".format(server_url, v_Number)
  r = requests.post(address_to_send, new_number, json=data)

Sanic 端的 post 方法是:

async def post(self, request, *args, **kwargs):
  //some_code

现在,我无法检索使用 requests.post 从代码中发送的 new_number。任何人都可以帮助我吗?我对服务器端编程非常陌生,尤其是 Sanic。如果需要,我很乐意提供额外的代码。

【问题讨论】:

  • 我找不到解决方案,所以我决定寻求解决方法。我将发送带有 v_number 的 new_number,然后在服务器端将它们分开并执行所需的操作。

标签: python post python-requests sanic


【解决方案1】:

发送到 Sanic 端点​​的所有 json 数据都以request.json 的形式提供,请参阅docs

所以,看起来你只需要这样做:

def send_update_to_server(v_Number, state, server_url, new_number):
  data = {'state': state, 'new_number': new_number}
  address_to_send = "http://{}/vote/{}".format(server_url, v_Number)
  r = requests.post(address_to_send, json=data)

然后,您可以在处理程序中读取它:

from sanic.response import text
async def post(self, request, *args, **kwargs):
    return text(request.json.get("new_number"))

【讨论】:

  • 非常感谢您的回答。它对我有用。如果你能帮我解决这个问题,我还有一个问题。正如您在上面看到的,发布请求是通过“Vote/v_Number”发送的。在后端,获取请求也类似于期望“v_Number”的请求。但是我希望在发送获取请求时通过发布请求发布较早的 v_Number。我需要为此创建另一条路线吗?目前,来自 post 请求的 v_number 存储在使用电机的 mongo 数据库中(我也不知道如何检索值)。
  • 如果您想在community.sanicframework.org 上发送消息,我们可以进行更深入的讨论。
  • 如果我无法使其工作,我会尝试一些事情并就此与您联系。再次感谢您的帮助。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-05-19
  • 2012-03-13
  • 2021-11-02
  • 2019-05-12
  • 1970-01-01
  • 1970-01-01
  • 2023-02-24
相关资源
最近更新 更多