我正在尝试使用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 ..
另外,我想从客户端传递一个动态值并在网络上返回它。非常感谢!
答案 0 :(得分:0)
从{p>中删除.data
return jsonify(jsonData).data
答案 1 :(得分:0)
要获取路径参数的请求,您必须将参数注册为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}')