在 cURL 中使用 HTTP header 传递 API 密钥

Passing API key with HTTP header in cURL

我在 Apigee 中有一个 API 代理,它使用 API 密钥进行身份验证。我使用 cURL 通过我的 HTTP 请求 header 传递密钥,使用以下命令:

curl -v -H "apikey: my_key" http://api_org-test.apigee.net/v1/helloapikey

我收到这个错误:

Invoke-WebRequest : Cannot bind parameter 'Headers'. Cannot convert the 
"apikey: my_key" value of type "System.String" to 
type "System.Collections.IDictionary".

当我修改我的策略以查找查询参数中的键而不是 header 时,它工作正常。我在这里遗漏了什么吗?

试试这个:

curl -v -H @{'apikey' = 'my_key'} http://api_org-test.apigee.net/v1/helloapikey

注: curlInvoke-WebRequest cmdlet 的别名:

Get-Alias curl

输出:

CommandType     Name
-----------     ----
Alias           curl -> Invoke-WebRequest 

PowerShell 根本不会解析您的 URL 中的变量。您正在尝试查询 URI http://$serverHost:1234/service 处的服务,但该服务不起作用。你可以做

$serverHost = "myHost"
$service = "http://$serverHost`:1234/service"
Invoke-WebRequest $service -Method Get

您可以安装 curl:

通过执行此命令删除现有的 curl 别名:

Remove-item alias:curl

那么你的命令将起作用:

curl -v -H "apikey: my_key" http://api_org-test.apigee.net/v1/helloapikey

只是为了将此添加到讨论中,我不得不对 api 密钥进行哈希处理,但 保留 令牌调用关键字而不是将其更改为 'apikey'。这正是对我有用的!

curl -v -H @{'X-API-TOKEN' = '[*insert key here*]'} '*datacenter_url*)'

另外值得注意的是 PowerShell 新手,-v 代表冗长。此开关在 PowerShell 中的命令下为您提供青色文本,关于命令 PS 是 运行。几乎就像一个逐个播放的评论。很有用我想我会提到它。

None 以上答案对我有用(我得到了一个错误 -- parse error near })。

这有效:

curl -X GET \
  'http://api_org-test.apigee.net/v1/helloapikey' \
  -H 'apikey: my_key'