google-app-engine - Flask 只接受单个 json 变量并在设置两个变量时崩溃
问题描述
我正在 Google App Engine 上构建一个网络爬虫应用程序。我想使用 post 方法将变量传递给 Flask。然后,接收到的变量成为我的网络爬虫应用程序的输入。但是,Flask 只接受来自 post 的单个变量。如果我在函数中添加另一个变量,Flask 会崩溃。
我对 Flask 和 Google 应用引擎的了解有限。我为这个问题苦苦挣扎了好几天,我们将非常感谢您的帮助。
失败的功能
#server-side function that does not work,with 2 variable passed
@app.route('/bac',methods=['GET', 'POST'])
def bac():
request_json = request.get_json()
filename = request_json["filename"]
url = request_json["url"]
#baseconnect.Baseconnect(url=url,filename=filename).run()
return filename,url
#The function to post on client side
import requests
req = requests.Session()
data = req.post('https://project.appspot.com/bac',json={"filename":"yuan","url":"https:...f5"})
print(data.text)
#output:
Internal server eror 500
成功的功能
#server-side function that works,with 1 variable passed
@app.route('/bac',methods=['GET', 'POST'])
def bac():
request_json = request.get_json()
filename = request_json["filename"]
#url = request_json["url"]
#baseconnect.Baseconnect(url=url,filename=filename).run()
return filename
#The function to post on client side
import requests
req = requests.Session()
data = req.post('https://project.appspot.com/bac',json={"filename":"yuan"})
print(data.text)
#output:
yuan
Flask 似乎只接受单个变量。问题是什么....
解决方案
您在这里遇到的问题是 Flask 只返回Response
对象,而 Flask 会return filename, url
考虑return Response, status or header
.
在这种情况下,url
就变成了http状态码或者header,这显然是不对的。
您需要flask.jsonify()
返回所谓的“多变量”的正确格式。
像这样的东西:(只有重要的部分)
# In server-side code
from flask import jsonify
@app.route('/bac',methods=['GET', 'POST'])
def bac():
request_json = request.get_json()
filename = request_json["filename"]
url = request_json["url"]
# Do your logic here
return jsonify({ filename_returned: filename, url_returned: url })
# client-side
import requests
req = requests.Session()
json_data = req.post('https://project.appspot.com/bac',json={"filename":"yuan", "url": "http:xxxxxxx"})
real_data = json.loads(json_data)
# real_data should be the result you want
推荐阅读
- php - 部署到实时服务器后,Laravel 5.5 中的 ReflectionException 错误
- javascript - Vuetify - 使用更改事件将所选项目分配给数据属性
- python - UnicodeDecodeError:“utf-8”编解码器无法解码位置 0 的字节 0xc4:
- xamarin - 在 Xamarin 表单中实现自定义 Webview
- java - Getting only aggregations results in elasticsearch
- r - 字符向量到数据框
- cmake - 为什么 cmake 构建没有在引号中设置路径?
- transactions - HERE 地理编码交易未显示在使用页面上
- android - AdMob 广告不显示(统一)
- c# - 如何计算在 C# 中使用数组随机生成的每个数字