python - 如何修复 web 中返回 request.get_json 并获取 null 的问题?

标签 python flask socket.io

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

或者我应该在客户端中使用套接字来发送消息并在服务器中获取它?

代码 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"})

我希望在网络上可以显示 the json data from my client side such as{"mytext":"lalala"}而不是空。 My Output .. 此外,我想从客户端传递动态值并将其返回到网络上。非常感谢!

最佳答案

  • 为了检索键值对
    • 对于 GET 请求:您必须使用 request.args docs
    • 对于 POST 请求:您必须使用 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 的操作。为了完整性,我添加了路径参数

因此,您的服务器必须变得

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}')

关于python - 如何修复 web 中返回 request.get_json 并获取 null 的问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57237815/

相关文章:

Python 复杂对象的决策树分类

python - 通过密码查询 SQLAlchemy 用户模型永远不会匹配用户

javascript - 使用 system.js 导入 socket.io

python - 时间序列绘制 Pandas 中的不一致

python - 使用 Python 查找 PDF 的标题

python - 使用 django shell 访问表

javascript - 使用 Flask 在 html 中引用 .js 文件的静态资源问题

python - 我的 Flask 应用程序无法在树莓派上正确提供视频,但在我的笔记本电脑上正常

mysql - 如何使用 socket.io 删除所有用户的消息?

javascript - Socket.io - 发出 JS 对象导致最大递归错误,然后根本不发送