在Flask API python的post请求中发送json参数getting error ValueError(“无法解码任何json对象”)

2024-06-28 11:25:59 发布

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

我在开发烧瓶原料药。我想创建一个带有accept JSON参数的API路由,并基于该JSON在数据库中进行搜索。 我的代码如下:

@mod_api.route('/test', methods=['POST'])
def test():
    query_params = json.loads(request.data)
    json_resp = mongo.db.mydb.find(query_params)
    return Response(response=json_util.dumps(json_resp), status=200, mimetype='application/json')

现在,当我运行api时,我会按照我的路线运行:这个示例如下所示:

^{pr2}$

我不知道如何发送json参数。如果我这样做:

http://0.0.0.0:5002/api/test?{'var1':'123', 'var2':'456'}

我得到一个错误ValueError("No JSON object could be decoded")

如何发送这个json参数?在


Tags: 代码testapi数据库json路由参数烧瓶
2条回答

首先,我想指出,通常我们使用^{}来获取json数据,^{}包含flask无法处理的传入请求数据。在

curl测试你的应用程序应该很容易,用这种方式发送json数据:

$ curl -H "Content-Type: application/json" -X POST -d '{"var1":"123", "var2":"456"}' http://localhost:5000/api/test

您可能没有提供JSON数据。使用位于http://0.0.0.0:5002的浏览器,在浏览器控制台中使用XHR来测试API。在

var xmlhttp = new XMLHttpRequest();   // new HttpRequest instance 
xmlhttp.open("POST", "/api/test");
xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xmlhttp.send(JSON.stringify({'var1':'123', 'var2':'456'}));

您可以在Network选项卡中看到请求/响应,Flask进程也将显示正在发生的请求。在

相关问题 更多 >