【问题标题】:How to get raw request payload in Flask/Connexion?如何在 Flask/Connexion 中获取原始请求负载?
【发布时间】:2020-07-13 14:34:58
【问题描述】:

我需要在Connexion API 处理程序中使用Content-Type: application/x-www-form-urlencoded 获取POST 请求的主体。接受的答案here 建议使用request.get_data(),但是这对我来说总是只返回b''。我的猜测是 Connexion 在调用 request.get_data() 之前解析数据,这就是导致问题的原因。

在这种情况下如何获取原始请求负载?如果无法直接获取,如何正确从request.form(似乎包含解析后的数据)重构它?

【问题讨论】:

  • 你试过使用connexion.request.json吗?

标签: python flask post connexion x-www-form-urlencoded


【解决方案1】:

我不确定是否有更简单的方法,但这似乎可以解决问题:

import urllib.parse

form_data = request.form
request_data = '&'.join([k + '=' + urllib.parse.quote_plus(v) for k, v in form_data.items()])

【讨论】:

    【解决方案2】:
    from connexion import request
    
    type(request.form)
    # <class 'werkzeug.datastructures.ImmutableMultiDict'>
    print(dict(request.form))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多