我正在尝试使用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 ..
此外,我想从客户端传递动态值并将其返回到网络上。非常感谢!
最佳答案
对于获取路径参数的请求,您必须将您的参数注册为 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/