【问题标题】:Get json from request flask [duplicate]从请求烧瓶中获取json [重复]
【发布时间】: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() 并且它起作用了

【问题讨论】:

    标签: python json http flask


    【解决方案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】:

      我尝试执行您发布的相同代码,并且能够获取 usernamepassword 而不是 None 的值。

      【讨论】:

      • 你用过Python3吗?
      • 是的,Python 3.4.4
      • 你用的是什么版本的python?
      • 我使用的是 Python 2.7.10。现在我尝试使用 Python 3.5.1,但我仍然没有用户名
      • 下次请分享您的代码而不是图片!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-30
      • 2014-07-23
      • 2016-04-21
      • 1970-01-01
      • 2022-01-25
      相关资源
      最近更新 更多