2017-03-04 72 views
-3

如果我把運行這個程序做一個HTTP後到我的瓶服務器,這我知道,回報率200響應:瓶打印不工作

import requests 
import json 
dump= '{"on": false}' 
r = requests.post('http://127.0.0.1:5000', data=dump, 
        headers={'Content-Type': 'application/json'}) 

而我的瓶服務器的代碼:

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將其發送到網絡上的網橋。這些都沒有工作,我不知道爲什麼。

+4

'return' **退出函數**。任何你在'return'之後嘗試執行的東西都根本就沒有達到。所以,當代碼到達'return jsonify(content)'時,代碼跟隨什麼並不重要,代碼永遠不會執行。 –

回答

-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功能,因爲在瓶中jsonify()函數返回flask.Response()對象,而不是一個JSON字符串你會POST或PUT到另一個服務。

+0

所以我只想使用jsonify,如果我發送迴應發送設備? –

+0

對於請求HTTP響應的客戶端,是的。 –

+0

好吧,夠公平的。我應該理解回報的事情,對不起。我的最後一件事是,當撇號被刪除時,這是他們將「{」的HTTP POST保留爲「:false}」的一種方式,這意味着PUT不起作用。 –