You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PowerQuery调用MongoDB API返回Bad Request但Postman正常

问题原因与解决方案

你的PowerQuery请求返回Bad Request的核心原因是请求体格式与Content-Type声明不匹配:

  • 你在headers里指定了Content-Type="application/json",但实际用Uri.BuildQueryString(body)生成的是URL编码的表单格式(比如dataSource=MyCluster&database=sample_airbnb...),而非MongoDB Data API要求的JSON格式。
  • Postman中你应该是直接发送了JSON格式的请求体,所以能正常工作。

修正后的PowerQuery代码

let
    url = "https://eu-central-1.aws.data.mongodb-api.com/app/data-datwc/endpoint/data/v1/action/find",
    headers = [#"Content-Type"="application/json", #"api-key"="{{MYAPIKEY}}"],
    body = [
        dataSource= "MyCluster",
        database= "sample_airbnb",
        collection= "listingsAndReviews"
    ],
    // 将记录转为JSON格式的二进制内容,匹配Content-Type声明
    jsonBody = Text.ToBinary(Json.FromValue(body)),
    response = Json.Document(Web.Contents(url,
        [
            Headers = headers,
            Content = jsonBody
        ]))
in
    response

关键修正点

  • 用Json.FromValue(body)把PowerQuery的记录类型转换为标准JSON字符串,再通过Text.ToBinary转为二进制请求体,确保与application/json的Content-Type一致。
  • 保留api-key和其他请求头的正确设置,确保权限验证通过。

额外检查项

  1. 确认{{MYAPIKEY}}已替换为你的实际MongoDB API密钥,没有保留占位符。
  2. 确保MongoDB Data API的权限配置允许该API密钥访问指定的集群、数据库和集合。
  3. 若仍有问题,可在PowerQuery中启用抓包工具对比Postman和PowerQuery的请求内容,确认所有参数(包括请求头、请求体)完全一致。

内容的提问来源于stack exchange,提问作者Dav

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 02:04:57