PowerShell:
Wysyłanie żądania HTTP

How to: (Jak to zrobić?)

Wysłanie prostej prośby GET do serwisu:

$response = Invoke-RestMethod -Uri 'https://jsonplaceholder.typicode.com/todos/1' -Method Get
$response

Przykładowy wynik:

userId    : 1
id        : 1
title     : delectus aut autem
completed : false

Wysyłanie danych metodą POST:

$uri = 'https://jsonplaceholder.typicode.com/posts'
$body = @{
  title = 'foo'
  body = 'bar'
  userId = 1
}
$response = Invoke-RestMethod -Uri $uri -Method Post -Body ($body | ConvertTo-Json) -ContentType 'application/json'
$response

Przykładowy wynik:

userId : 1
id     : 101
title  : foo
body   : bar

Deep Dive (Dogłębna analiza)

Invoke-RestMethod to dość nowe rozwiązanie w PowerShellu. Przed jego pojawieniem się, zadanie wykonałbyś z WebClient lub HttpWebRequest. Świat się zmienia, HTTP/2 i HTTP/3 wkraczają, lecz Invoke-RestMethod jest wystarczająco elastyczny, by podążać za tym.

Alternatywy, jak cURL czy POSTMAN, są dobre do testowania, ale nie zawsze wygodne w skryptach. Invoke-RestMethod może też używać autoryzacji, nagłówków HTTP, a nawet obsługiwać sesje związane z ciasteczkami.

Co więcej, obsługa błędów: jeżeli zapytanie się nie powiedzie, Invoke-RestMethod może zwrócić wyjątek z HttpErrorResponseException zawierający status odpowiedzi oraz treść błędu.

See Also (Zobacz również)