PowerBI调用带JSON体的GET接口返回404,Postman可正常请求
解决方案:PowerBI调用带请求体的GET接口问题
问题根源分析
- 请求方法被自动修改:PowerBI的
Web.Contents函数默认在包含Content参数时,会将请求方法从GET转为POST。你的接口只接受GET请求,因此服务器返回404且未收到请求。 - JSON序列化错误:你直接将JSON字符串传给
Json.FromValue,导致函数把整个字符串转成了带双引号包裹的JSON值(如"{\"key1\":\"value1\"}"),服务器解析时识别为无效JSON结构,返回400错误。
修正后的M语言代码
let url = "https://website.com/api/v1/endpoint", // 用PowerBI记录类型定义请求体,避免手动拼接JSON的转义问题 bodyRecord = [key1 = "value1", key2 = "value2"], // 让M语言自动完成JSON序列化 body = Json.FromValue(bodyRecord), headers = [#"Content-Type" = "application/json"], // 显式指定请求方法为GET,防止被自动转为POST response = Web.Contents(url, [ Content = body, Headers = headers, Method = "GET" ]), Source = Json.Document(response) in Source
关键修改说明
- 强制GET请求:通过
Method = "GET"明确指定请求方法,避免PowerBI自动切换为POST,确保请求能匹配到目标接口。 - 正确序列化JSON:使用PowerBI原生的记录类型(
[key1 = "value1", ...])配合Json.FromValue,由系统自动处理JSON的序列化和转义,生成符合服务器要求的JSON对象请求体。
额外注意事项
如果仍有问题,检查PowerBI的数据源隐私设置:在「选项和设置」→「数据源设置」中,将该接口的隐私级别设置为「公共」,避免因隐私规则导致请求被拦截。
内容的提问来源于stack exchange,提问作者Samh
相关产品推荐
相关产品推荐

