如何在python中使用flask从post请求中检索数据



我正在使用flask编写rest api。目前客户端的代码如下:

new_data = {'msg': message,
'rec':rec_id,
'snd':my_id}
requests.post("http://localhost:33/api/resources/messages/all", json = new_data)

我打印出了new_data它打印出了fine

{"味精":"这是一个消息","矩形":1、"新区":0}

,其余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传递给其他api,并可以以json形式打印出来。

问题并非源自最初帖子中显示的代码。错误发生在我声明两个变量的代码开始处:

my_id = int
rec_id = int

由于这两个变量没有值,因此在调用时导致问题。因此,它会导致错误消息"TypeError: type类型的对象不是JSON serializable";(此错误消息本身提供了一个很好的指示符,表明所使用的一个或多个变量可能是空的,并且不包含值,因此无法在消息中指定数据类型)。

因此,给这些变量一个实际值可以使程序正常工作。第二个很明显的错误是request.get_json需要在get_json后面加括号,使其成为request.get_json()

最新更新