Запрос Powershell Post API

#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.