如果我发送运行此程序来对我的Flask服务器执行HTTP Post,我知道它会返回200响应:
import requests
import json
dump= '{"on": false}'
r = requests.post('http://127.0.0.1:5000', data=dump,
headers={'Content-Type': 'application/json'})
我的Flask服务器代码:
from flask import Flask
from flask import request, jsonify
import requests
app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def signal():
if request.method == 'POST':
content = request.get_json()
return jsonify(content)
print(jsonify(content))
r = requests.put("http://192.168.1.102/api/F5La7UpN6XueJZUts1QdyBBbIU8dEvaT1EZs1Ut0/lights/5/state/", jsonify(content))
else:
return 'Hello, world!'
if __name__ == '__main__':
app.run(debug=True)
我想将数据打印到控制台,然后使用HTTP PUT将其发送到网络上的网桥。这些都不起作用,我不确定原因。
答案 0 :(得分:-1)
你需要在函数的最后返回
@app.route('/', methods=['GET', 'POST'])
def signal():
if request.method == 'POST':
content = request.get_json()
print(content)
r = requests.put("http://192.168.1.102/api/F5La7UpN6XueJZUts1QdyBBbIU8dEvaT1EZs1Ut0/lights/5/state/", content)
return jsonify(content)
else:
return 'Hello, world!'
注意:您可能过度使用jsonify
函数,因为flask中的jsonify()
函数返回flask.Response()
个对象,而不是您将POST或PUT到另一个服务的JSON字符串。