#rest #api #powershell #post
#rest #API #powershell #Публикация
Вопрос:
Я могу опубликовать запрос с помощью bash со следующим:
#!/bin/bash
APIKey="apikeyhere"
content="{"accessToken":"$APIKey","elements":[{"serialnumber":"AAAAAAAAA","name":"EXAMPLENAME","tags":"EXAMPLETAG"}]}"
curl -s -k -X POST -d 'content='$content 'https://apiaccess.example.com/v2/devices'
Я пытался использовать powershell, но получаю сообщение об ошибке «НЕДОПУСТИМЫЙ ЗАПРОС»:
$body = @{
"accessToken"="APIKeyhere"
"elements" = @{
"serialnumber"="AAAAA"
"name"="DeviceName"
"tags"="tag1,tag2"
}} | ConvertTo-Json
$header = @{
"Accept"="application/json"
"Content-Type"="application/json"
}
Invoke-RestMethod -Uri "https://apiaccess.example.com/v2/devices" -Method 'Post' -Body $body -Headers $header | ConvertTo-HTML
Есть какие-либо указания относительно того, как я могу исправить сценарий powershell?
Ответ №1:
Не делайте этого: | ConvertTo-Json
Ваши заголовки могут быть заменены этим: -ContentType application/json
Вероятно, вам не следует преобразовывать результаты в HTML, пока вы не поэкспериментируете с данными, которые вы получите обратно. Но это зависит от вас.
Ответ №2:
Однажды я делал нечто подобное, и мне пришлось перевести запрос CURL в Powershell. Возможно, вам поможет следующая статья: Пример CURL для Powershell
я также получил ошибку
«НЕДОПУСТИМЫЙ ЗАПРОС»:…
В моем случае API был странным. CURL сделал простой резервный вариант запроса GET для метода POST… потребовалось несколько часов, чтобы понять, что мне пришлось выполнять POST вместо GET в Powershell.