从请求烧瓶中获取json [重复]
Posted
技术标签:
【中文标题】从请求烧瓶中获取json [重复]【英文标题】:Get json from request flask [duplicate] 【发布时间】:2017-08-24 21:58:03 【问题描述】:客户端代码:
import requests
import json
url = 'http://127.0.0.1:5050/login'
user = "newUser"
password = "password"
headers = 'content-type': 'application/json'
response = requests.post(url, data="user": user,"pass": password, headers = headers)
服务器代码:
from flask import Flask, request, make_response
app = Flask(__name__)
@app.route('/login', methods=['GET','POST'])
def login():
if request.method == 'POST':
username = request.form.get("user")
password = request.form.get("pass")
//more code
return make_response("",200)
if __name__ == "__main__":
app.run(host = "127.0.0.1", port = 5050)
问题是我的用户名和密码总是无。
我也尝试过使用:
content = request.get_json(force = True)
password = content['pass']
和
request.form['user']
当我打印我拥有的内容时:http://127.0.0.1:5050/login' [POST]>。所以我找不到客户端发送的 json。
编辑:
我确实添加了 json.dumps 并使用了 request.get_json() 并且它起作用了
【问题讨论】:
【参考方案1】:您发送的是表单编码数据,而不是 JSON。仅设置内容类型不会将您的请求转换为 JSON。使用json=
发送 JSON 数据。
response = requests.post(url, json="user": user,"pass": password)
在 Flask 中检索数据:
data = request.get_json()
【讨论】:
【参考方案2】:我最初的猜测是,由于您没有在请求中设置 Content-Type 标头,因此 Flask 不明白它应该能够解析数据。尝试添加值为 application/json
的 Content-Type 标头,看看是否能到达您想要的位置。
要注意的另一件事是,当我点击登录页面时,浏览器会将 Content-Type 标头设置为
application/x-www-form-urlencoded
并将数据编码为user=asdf&passwd=asdf
【讨论】:
我加了headers = 'content-type': 'application/json'
,但还是不行
你还在用 json.dumps() 将 dict 转储到字符串中吗?【参考方案3】:
我尝试执行您发布的相同代码,并且能够获取 username
和 password
而不是 None
的值。
【讨论】:
你用过Python3吗? 是的,Python 3.4.4 你用的是什么版本的python? 我使用的是 Python 2.7.10。现在我尝试使用 Python 3.5.1,但我仍然没有用户名 下次请分享您的代码而不是图片!以上是关于从请求烧瓶中获取json [重复]的主要内容,如果未能解决你的问题,请参考以下文章
烧瓶 request.get_json() 没有收到来自 $.post() 请求的任何内容[重复]
将 JSON 从烧瓶传递到模板并解码 html 实体 [重复]
无法从另一个 docker 容器中的烧瓶应用程序对驻留在 docker 容器中的 django 应用程序进行“获取”调用 [重复]