首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将Windows cURL语法转换为等效的InvokeRestMethod命令

将Windows cURL语法转换为等效的InvokeRestMethod命令
EN

Stack Overflow用户
提问于 2019-06-13 02:40:50
回答 1查看 114关注 0票数 1

我在将Windows中正在运行的cURL命令转换为等效的PowerShell InvokeRestMethod命令时遇到了问题。看起来我已经很接近了。我得到了一个回应。但是,该应用编程接口似乎不理解InvokeRestMethod命令发送的嵌套哈希表元素域“。所有其他散列元素似乎都可以被API很好地识别。

cURL命令(工作中)

代码语言:javascript
复制
curl "https://api.rebrandly.com/v1/links" -X POST -H "apikey: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" -H "Content-Type: application/json" -d "{ \"destination\": \"http://longurl.com\", \"domain\": {\"fullName\": \"link.domain.com\"}}"

PowerShell:

代码语言:javascript
复制
$body = @{
 "destination"="longurl.com"
 "domain" = @("fullName", "link.domain.com")
} | ConvertTo-Json

$header = @{
 "apikey"="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
 "Content-Type"="application/json"
}

Invoke-RestMethod -Uri "https://api.rebrandly.com/v1/links" -Method 'Post' -Body $body -Headers $header

PS:我也试过使用下面的语法。不幸的是,我得到了同样的结果..其中"domain“散列元素被忽略。

代码语言:javascript
复制
$body = @{
 "destination"="longurl.com"
 "domain[0]" = "fullName"
 "domain[1]" = "link.domain.com"
} | ConvertTo-Json
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-13 03:37:08

当您使用JSON方括号时,它被解释为数组,而不是键值哈希表,后者在@(...)中将被转换为[...]数组。只需将嵌套语句中的方括号替换为@{...}花括号即可表示哈希表:

代码语言:javascript
复制
$body = @{
 "destination"="longurl.com"
 "domain" = @{"fullName" = "link.domain.com"}
} | ConvertTo-Json

这将导致匹配的JSON:

代码语言:javascript
复制
{
    "destination":  "longurl.com",
    "domain":  {
                   "fullName":  "link.domain.com"
               }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56568524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档