json - 将 curl 命令转换为 Powershell

标签 json powershell

我可以使用 curl 调用 REST api

curl  -H 'Authorization: Bearer <token>' \
      -H 'Accept: application/json' \
      -H 'Content-Type: application/json' \
      -X POST \
      -d '<json>' \
      https://api.dnsimple.com/v2/1010/zones/example.com/records

并且 json 需要采用以下格式:
{
  "name": "",
  "type": "MX",
  "content": "mxa.example.com",
}

如何使用 Invoke-WebRequest 调用此 API?我正在尝试以下(当然我在这里使用变量)当我调用它时,我收到错误 400
$uri =  [string]::Format("https://api.dnsimple.com/v2/{0}/zones/{1}/records",$account,$domain)
$headers = @{}
$headers["Authorization"] = [string]::Format("Bearer {0}", $token)
$headers["Accept"] = "application/json"
$headers["Content-Type"] = "application/json"

$json = @{}
$json["name"] = $subdomain
$json["type"] = "A"
$json["content"] = $ip

Invoke-WebRequest -Uri $uri -Body $json -Headers $headers -Method Post

最佳答案

问题似乎是您将原始哈希表传递给 -Body参数,而不是实际有效的 JSON 字符串。使用ConvertTo-Json为了这。此外,无需使用 [string]::Format()明确地,您可以使用 -f而是运营商!

$uri = 'https://api.dnsimple.com/v2/{0}/zones/{1}/records' -f $account,$domain
$headers = @{
  Authorization = 'Bearer {0}' -f $token
  Accept        = 'application/json'
  Content-Type  = 'application/json'
}
$json = @{
  name    = "$subdomain"
  type    = "A"
  content = "$ip"
} |ConvertTo-Json
Invoke-WebRequest -Uri $uri -Body $json -Headers $headers -Method Post

关于json - 将 curl 命令转换为 Powershell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41787314/

相关文章:

python - Django 装置 : Cannot assign data to textfield using json file

javascript - 来自 json 的 URL 添加尾部斜杠

windows - 安排 Powershell 和批处理作业同步运行

javascript - 理解javascript多维数组的问题

来自 Javascript JSONArray 的 Java JSONArray

json - 无法从 spark 作业写入 redis

powershell - Get-ADGroupMember获取用户详细信息?

powershell - 如何将所有者添加到 Azure AD 中的注册应用程序

PowerShell 在变量与文件上运行 Select-String

powershell - 使用 Powershell 远程安装 .msi