如何修复return request.get_json并在Web中获取null?

时间:2019-07-28 03:55:06

标签: python flask socket.io

我正在尝试使用flask-socket向客户端请求json,并希望将此对象返回到网络。我尝试打印该对象,它在终端中正常工作,但是当我打开本地主机时显示null。我该如何解决?

还是我应该在客户端中使用套接字来发送消息并将其发送到服务器中?

req.secure的代码:

Server

from flask import Flask, request, jsonify, Response import json app = Flask(__name__) @app.route('/', methods=['GET', 'POST']) def add_message(): jsonData = request.get_json() print(jsonData) return jsonify(jsonData) if __name__ == '__main__': app.run(debug=True, host='127.0.0.1') 的代码:

Client

我希望网络上的可以显示import requests while 1: requests.post('http://127.0.0.1:5000/', json={"mytext": "lalala"}) 而不是null。 My Output .. 另外,我想从客户端传递一个动态值并在网络上返回它。非常感谢!

2 个答案:

答案 0 :(得分:0)

从{p>中删除.data

return jsonify(jsonData).data

答案 1 :(得分:0)

  • 为了检索键值对
    • 对于GET request:您必须使用request.args docs
    • 对于POST request:您必须使用request.get_json() docs

要获取路径参数的请求,您必须将参数注册为docs

@app.route('/<name>', methods=['GET'])
def add_message_get_param(name):
    print(name)
    return jsonify({'name': name})

现在,您已经声明要传递一个json。但是您的浏览器屏幕截图显示您使用/hello来调用端点。为了传递键值对,您必须执行类似/?mykey=myvalue的操作。我为完整性添加了path参数

因此,您的服务器必须成为

from flask import Flask, request, jsonify
app = Flask(__name__)

@app.route('/', methods=['GET'])
def add_message_get():
    jsonData = request.args
    print(jsonData)
    return jsonify(jsonData)

@app.route('/<name>', methods=['GET'])
def add_message_get_param(name):
    print(name)
    return jsonify({'name': name})

@app.route('/', methods=['POST'])
def add_message_post():
    jsonData = request.get_json()
    print(jsonData)
    return jsonify(jsonData)

if __name__ == '__main__':
    app.run(debug=True, host='127.0.0.1')

和您的客户端用于调试目的:

import requests

result = requests.post('http://127.0.0.1:5000/', json={"mytext":"lalala"})
print(f'POST result: {result.text}')

result = requests.get('http://127.0.0.1:5000/?mytext=lalala')
print(f'GET result: {result.text}')

result = requests.get('http://127.0.0.1:5000/Antonis')
print(f'GET result: {result.text}')