仅当提供 Web API 密钥名称时才能指定 Web API 密钥
Posted
技术标签:
【中文标题】仅当提供 Web API 密钥名称时才能指定 Web API 密钥【英文标题】:A web API key can only be specified when a web API key name is provided 【发布时间】:2019-12-19 09:40:03 【问题描述】:我试图从 Power BI 的供应商的 REST API 中获取数据。
在获取数据时,在 Web API 下,它一直抛出这个错误。请参阅随附的屏幕截图。
这是一种 POST 方法,您可以在其中按响应正文中的任何字段进行过滤(但这次我没有传递任何字段)。
我用来获得响应的查询如下。抱歉,我忘记了在哪里找到的。
let
apiUrl = "my_api_url",
token="my_api_key",
options = [Headers=[Authorization="Bearer " & token ]],
result = Json.Document(Web.Contents(apiUrl , options))
in
#"result"
【问题讨论】:
【参考方案1】:您需要在请求中包含 ApiKeyName,而不是自己建立授权。
例如:
let Source = Web.Contents(apiURL, [ApiKeyName="mauapikey"]),
另见Microsoft Documentation 或someone's blog post
【讨论】:
【参考方案2】:我最近遇到了类似的问题,但找到了解决方案:
如果您的授权必须在标题中,那么您的解决方案就差不多完成了。在我的情况下,授权需要在标头中,但使用基本身份验证而不是令牌。我相信如果您对代码执行以下操作,它将起作用
let
apiUrl = "my_api_url",
token="my_api_key",
options = [Headers=[#"Authorization"="Bearer " & token ]],
result = Json.Document(Web.Contents(apiUrl , options))
in
#"result"
唯一添加的是授权前的'#',然后是用双引号“授权”围绕授权。
【讨论】:
以上是关于仅当提供 Web API 密钥名称时才能指定 Web API 密钥的主要内容,如果未能解决你的问题,请参考以下文章
仅当特定密钥对值与可迭代匹配时,才在 JSON 对象中获取多个 JSON 密钥对值
在 ASP.NET Core Web API 的已注册 .NET 数据提供程序列表中找不到指定的不变名称“System.Data.sqlClient”
仅当使用列列表并且 IDENTITY_INSERT 为 ON [重复] 时,才能指定表“客户”中标识列的显式值