在 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
注:
curl
是 Invoke-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'
我在 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
注:
curl
是 Invoke-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'