我正在尝试创建一个 flask 服务,我想在其中发送来自一个请求的数据。形式到另一个网址在json格式,请任何人都可以帮助我实现这一点?
redirect(url_for('any_method'), json = json.dumps(my_form_dict))
当我尝试执行上面的代码时,我得到以下错误:
TypeError: redirect() got an unexpected keyword argument 'json' The above is the error here.
m1m5dgzv1#
您可以使用307状态代码重定向POST请求用途:
redirect(url_for('any_method', json=json.dumps(my_form_dict)), code=307)
有关详细信息,请参阅此答案:Make a POST request while redirecting in flask
xsuvu9jc2#
无法重定向POST请求。详细信息请参阅here。
t1qtbnec3#
您的问题是向redirect函数传递了太多参数。它只需要三个参数:location、code和Response。如果您想传递额外的参数,请使用Flask url_for方法:
location
code
Response
redirect(url_for('any_method', json=form_json))
注意不同之处,您将url_for和额外字段作为两个参数传递,在我的版本中,我在url_for中添加了额外字段,因此redirect只接收一个参数。
url_for
redirect
3phpmpom4#
我使用requests包将GET请求重定向到POST请求。诀窍是使用flask.make_response()创建一个新的Resposne对象。在我的场景中,最后一个响应是HTML文本,所以我得到text作为响应。
requests
GET
POST
flask.make_response()
Resposne
text
from flask import request, make_response import requests @app.route('/login', methods=['GET']) def login(): data = {"data": request.args['data']} redirect_response = requests.post('https://my-api/login', json=data).text return make_response(redirect_response, 302)
4条答案
按热度按时间m1m5dgzv1#
您可以使用307状态代码重定向POST请求用途:
有关详细信息,请参阅此答案:Make a POST request while redirecting in flask
xsuvu9jc2#
无法重定向POST请求。详细信息请参阅here。
t1qtbnec3#
您的问题是向redirect函数传递了太多参数。它只需要三个参数:
location
、code
和Response
。如果您想传递额外的参数,请使用Flask url_for方法:注意不同之处,您将
url_for
和额外字段作为两个参数传递,在我的版本中,我在url_for
中添加了额外字段,因此redirect
只接收一个参数。3phpmpom4#
我使用
requests
包将GET
请求重定向到POST
请求。诀窍是使用
flask.make_response()
创建一个新的Resposne
对象。在我的场景中,最后一个响应是HTML文本,所以我得到
text
作为响应。