如何在 Flask/Connexion 中获取原始请求负载?
How to get raw request payload in Flask/Connexion?
我需要使用 Content-Type: application/x-www-form-urlencoded
获取 POST
请求的正文 Connexion API handler. The accepted answer here 建议使用 request.get_data()
,但是这总是 returns b''
对我来说。我的猜测是 Connexion 在调用 request.get_data()
之前解析数据,这就是导致问题的原因。
在这种情况下,如何获取原始请求负载?如果没有办法直接获取它,我如何从request.form
(似乎包含已解析的数据)中正确地重建它?
我不确定是否有更简单的方法,但这似乎可以解决问题:
import urllib.parse
form_data = request.form
request_data = '&'.join([k + '=' + urllib.parse.quote_plus(v) for k, v in form_data.items()])
from connexion import request
type(request.form)
# <class 'werkzeug.datastructures.ImmutableMultiDict'>
print(dict(request.form))
我需要使用 Content-Type: application/x-www-form-urlencoded
获取 POST
请求的正文 Connexion API handler. The accepted answer here 建议使用 request.get_data()
,但是这总是 returns b''
对我来说。我的猜测是 Connexion 在调用 request.get_data()
之前解析数据,这就是导致问题的原因。
在这种情况下,如何获取原始请求负载?如果没有办法直接获取它,我如何从request.form
(似乎包含已解析的数据)中正确地重建它?
我不确定是否有更简单的方法,但这似乎可以解决问题:
import urllib.parse
form_data = request.form
request_data = '&'.join([k + '=' + urllib.parse.quote_plus(v) for k, v in form_data.items()])
from connexion import request
type(request.form)
# <class 'werkzeug.datastructures.ImmutableMultiDict'>
print(dict(request.form))