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

2024-10-02 06:24:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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形式打印出来


Tags: 代码apirestapiidjsonmessagenewdata
1条回答
网友
1楼 · 发布于 2024-10-02 06:24:25

该问题并非源于最初帖子中显示的代码。错误源于代码的开头,我在这里声明了两个变量:

my_id = int
rec_id = int

由于这两个变量没有值,因此在调用时会导致问题。因此,它产生了错误消息“TypeError:type类型的对象不可JSON序列化”(此错误消息本身提供了一个很好的指示器,表明所使用的一个或多个变量可能为空且没有值,因此无法在消息中指定数据类型)

因此,给这些变量一个实际值会使程序正常工作。第二个错误是request.get_json需要在get_json之后加上括号,使之成为request.get_json()

相关问题 更多 >

    热门问题