我可以使用 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/