python 如何使用flask.redirect发送POST请求?

gr8qqesn  于 2023-01-01  发布在  Python
关注(0)|答案(4)|浏览(250)

我正在尝试创建一个 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.
m1m5dgzv

m1m5dgzv1#

您可以使用307状态代码重定向POST请求用途:

redirect(url_for('any_method', json=json.dumps(my_form_dict)), code=307)

有关详细信息,请参阅此答案:Make a POST request while redirecting in flask

xsuvu9jc

xsuvu9jc2#

无法重定向POST请求。详细信息请参阅here

t1qtbnec

t1qtbnec3#

您的问题是向redirect函数传递了太多参数。它只需要三个参数:locationcodeResponse。如果您想传递额外的参数,请使用Flask url_for方法:

redirect(url_for('any_method', json=form_json))

注意不同之处,您将url_for和额外字段作为两个参数传递,在我的版本中,我在url_for中添加了额外字段,因此redirect只接收一个参数。

3phpmpom

3phpmpom4#

我使用requests包将GET请求重定向到POST请求。
诀窍是使用flask.make_response()创建一个新的Resposne对象。
在我的场景中,最后一个响应是HTML文本,所以我得到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)

相关问题