使用请求将JSON发送到Flask

use*_*887 3 python flask

我正在尝试使用请求库将一些JSON数据发送到Flask应用程序.我希望application/json从服务器回来.当我使用Postman时这很好用,但是当我使用请求时,我会application/html回来.

import requests
server_ip = 'server_ip:port/events'
headers = {'Content-Type': 'application/json'}
event_data = {'data_1': 75, 'data_2': -1, 'data_3': 47, 'data_4': 'SBY'}
server_return = requests.post(server_ip, headers=headers, data=event_data)
print server_return.headers
{'date': 'Fri, 05 Jun 2015 17:57:43 GMT', 'content-length': '192', 'content-type': 'text/html', 'server': 'Werkzeug/0.10.4 Python/2.7.3'}
Run Code Online (Sandbox Code Playgroud)

为什么Flask看不到JSON数据并正确响应?

dav*_*ism 13

您目前没有发送JSON数据.你需要设置json参数,而不是data.content-type在这种情况下没有必要设置自己.

r = requests.post(url, json=event_data)
Run Code Online (Sandbox Code Playgroud)

text/html您看到的标题是响应的内容类型.Flask似乎正在向您发送一些HTML,这看起来很正常.如果您期望application/json回来,可能这是一个错误页面,因为您没有正确发送JSON数据.

您可以使用在Flask中读取json数据request.json.

from flask import request

@app.route('/events', methods=['POST'])
def events():
    event_data = request.json
Run Code Online (Sandbox Code Playgroud)