POST 请求参数返回 "none"
POST request parameters returning "none"
我有以下 POST 请求:
import requests
payload = {'key1':'value1'}
r = requests.post('http://127.0.0.1:5000/test', params=payload)
print(r.url)
print(r.text)
我的烧瓶应用程序尝试 return 来自 key1 的值:
from flask import Flask, request
app = Flask(__name__)
@app.route('/test', methods = ["GET", "POST"])
def query_params():
val = request.args.get("key1")
return val
要去 http://127.0.0.1:5000/test returns
TypeError TypeError: The view function for 'query_params' did not
return a valid response. The function either returned None or ended
without a return statement.
烧瓶调试器的输出:
127.0.0.1 - - [21/May/2022 21:47:17] "POST /test?key1=value1 HTTP/1.1" 200 -
我在这里错过了什么?非常感谢您的帮助!
干杯,
马里奥
当您从浏览器访问 http://127.0.0.1:5000/test
时,它是一个 GET 请求,并且您的请求中没有传递任何参数。
如果您访问 http://127.0.0.1:5000/test?key1=value1
,将打印您预期的输出。
关于您使用的 requests.post
片段:如果您看到 documentation,params
通常用于 GET 请求,POSTS 得到 data
参数。但似乎您的代码有效,它将参数附加到请求(就像在 GET 中发生的那样)并发出 POST 请求。有趣的发现!
r = requests.post('http://127.0.0.1:8000/test', data=payload)
如果参数不存在,您可以使用“后备”值来增强您的代码:
@app.route('/test', methods = ["GET", "POST"])
def query_params():
val = request.args.get("key1", "parameter was not provided")
return val
总而言之,我认为您应该决定提交数据的请求方法应该是 GET 还是 POST,然后相应地更新您的代码(如果是 GET,您的代码片段就可以了,如果您应该使用 POST,尝试将 params
切换为 data
然后你的烧瓶路由代码可以使用新的有效负载“格式”。
更新代码 以“如果 Flask 应用程序收到带有特定 key:value 对的 POST 请求,则启动 python 脚本”:
@app.route('/test', methods = ["GET", "POST"])
def query_params():
if request.method == 'POST':
val = request.args.get("the expected key", "parameter was not provided")
if val == "the expected value":
# do the things you want to do
return "processing done!"
我有以下 POST 请求:
import requests
payload = {'key1':'value1'}
r = requests.post('http://127.0.0.1:5000/test', params=payload)
print(r.url)
print(r.text)
我的烧瓶应用程序尝试 return 来自 key1 的值:
from flask import Flask, request
app = Flask(__name__)
@app.route('/test', methods = ["GET", "POST"])
def query_params():
val = request.args.get("key1")
return val
要去 http://127.0.0.1:5000/test returns
TypeError TypeError: The view function for 'query_params' did not return a valid response. The function either returned None or ended without a return statement.
烧瓶调试器的输出:
127.0.0.1 - - [21/May/2022 21:47:17] "POST /test?key1=value1 HTTP/1.1" 200 -
我在这里错过了什么?非常感谢您的帮助!
干杯, 马里奥
当您从浏览器访问 http://127.0.0.1:5000/test
时,它是一个 GET 请求,并且您的请求中没有传递任何参数。
如果您访问 http://127.0.0.1:5000/test?key1=value1
,将打印您预期的输出。
关于您使用的 requests.post
片段:如果您看到 documentation,params
通常用于 GET 请求,POSTS 得到 data
参数。但似乎您的代码有效,它将参数附加到请求(就像在 GET 中发生的那样)并发出 POST 请求。有趣的发现!
r = requests.post('http://127.0.0.1:8000/test', data=payload)
如果参数不存在,您可以使用“后备”值来增强您的代码:
@app.route('/test', methods = ["GET", "POST"])
def query_params():
val = request.args.get("key1", "parameter was not provided")
return val
总而言之,我认为您应该决定提交数据的请求方法应该是 GET 还是 POST,然后相应地更新您的代码(如果是 GET,您的代码片段就可以了,如果您应该使用 POST,尝试将 params
切换为 data
然后你的烧瓶路由代码可以使用新的有效负载“格式”。
更新代码 以“如果 Flask 应用程序收到带有特定 key:value 对的 POST 请求,则启动 python 脚本”:
@app.route('/test', methods = ["GET", "POST"])
def query_params():
if request.method == 'POST':
val = request.args.get("the expected key", "parameter was not provided")
if val == "the expected value":
# do the things you want to do
return "processing done!"