我正在使用flask开发RESTAPI。目前,客户端的代码如下所示:
new_data = {'msg': message,
'rec':rec_id,
'snd':my_id}
requests.post("http://localhost:33/api/resources/messages/all", json = new_data)
我打印出了新的数据,它打印得很好,打印得很好
{'msg': 'This is a message', 'rec': 1, 'snd': 0}
rest api中的代码是:
@app.route('/api/resources/messages/all', methods=['GET', 'POST'])
def api_messages():
if request.method == "GET":
return jsonify(messages)
if request.method == "POST":
sentmsg = request.json
print (sentmsg)
改变
sentmsg = request.json
到
sentmsg = request.get_json()
未更改任何内容,因为它仍然会导致相同的错误。指定内容类型也不会导致对结果的任何更改
但是,此代码在尝试发布时会导致错误
TypeError: Object of type type is not JSON serializable
如何更改此代码,以便将json传递给RESTAPI并以json形式打印出来
该问题并非源于最初帖子中显示的代码。错误源于代码的开头,我在这里声明了两个变量:
由于这两个变量没有值,因此在调用时会导致问题。因此,它产生了错误消息“TypeError:type类型的对象不可JSON序列化”(此错误消息本身提供了一个很好的指示器,表明所使用的一个或多个变量可能为空且没有值,因此无法在消息中指定数据类型)
因此,给这些变量一个实际值会使程序正常工作。第二个错误是
request.get_json
需要在get_json
之后加上括号,使之成为request.get_json()
相关问题 更多 >
编程相关推荐