Как использовать веб-сервис с помощью PowerShell? - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть следующий REST URL:

https://webserviceconsume.domain.local/web/api/rest?formatType=json&opName=userAPI&opData={param0:"sample",param1:{"list":[{"name1":"sample1","value1":"sample1"},{"name2":"sample2","value2":"sample2"}]},param2:-1}

Я хочу написать сценарий PowerShell для вызова этого URI. Он должен выглядеть примерно так:

$response = Invoke-RestMethod -Uri 'https://webserviceconsume.domain.local/web/api/rest' -Body $body -Headers $headers -ContentType "application/json"

Вот заголовок:

$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("accept", 'application/json')
$headers.Add("X-App-Key", 'XXXXX')

, и затем я хочу построить $body, но не знаю, как это сделать.

Ответы [ 3 ]

1 голос
/ 28 апреля 2020

Попробуйте следующую переменную как тело.

$body = [PSCustomObject]@{
    param0 = 'sample';
    param1 =  @{
        list = @(
            @{name1 = "sample1"; value1 = "sample1"};
            @{name2 = "sample2"; value2 = "sample2"}
        )
    };
    param2 = -1
} | ConvertTo-Json -Depth 3
0 голосов
/ 29 апреля 2020

Использование Rest с PowerShell - это очень распространенная вещь, со многими постами в блогах, статьями и Youtube видео , поясняющими topi c и показывающими примеры.

Простые примеры метода PowerShell Invoke-RestMethod

# Simple GET example

$response = Invoke-RestMethod 'http://example.com/api/people'
# assuming the response was in this format { "items": [] }
# we can now extract the child people like this
$people = $response.items

# GET with custom headers example

$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$headers.Add("X-DATE", '9/29/2014')
$headers.Add("X-SIGNATURE", '234j123l4kl23j41l23k4j')
$headers.Add("X-API-KEY", 'testuser')

$response = Invoke-RestMethod 'http://example.com/api/people/1' -Headers $headers


# PUT/POST example

$person = @{
    first='joe'
    lastname='doe'
}
$json = $person | ConvertTo-Json
$response = Invoke-RestMethod 'http://example.com/api/people/1' -Method Put -Body $json -ContentType 'application/json'

# DELETE example

$response = Invoke-RestMethod 'http://example.com/api/people/1' -Method Delete
0 голосов
/ 28 апреля 2020

Я использую PowerShell только 3 дня, поэтому это может быть не самый эффективный код, но это то, что работает для меня

$URL        = ""

$Method     = 'PUT'

$Headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$Headers.Add("accept", 'application/json')
$Headers.Add("X-App-Key", 'XXXXX')

$Body       = ""

$Out        = ".\response.json"

    $response = 
    @{
        Uri         = $URL
        Method      = $Method
        Headers     = $Headers
        Body        = $Body
    }
    Invoke-RestMethod @response | ConvertTo-Json | Out-File $Out
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...