Enviando uma requisição HTTP

PowerShell:
Enviando uma requisição HTTP

How to:

Vamos usar o comando Invoke-RestMethod para enviar uma requisição GET simples:

$response = Invoke-RestMethod -Uri 'http://api.exemplo.com/dados' -Method Get
Write-Output $response

Para enviar uma requisição POST com corpo JSON, faríamos:

$body = @{
    chave = 'valor'
    outro = 'dado'
} | ConvertTo-Json

$response = Invoke-RestMethod -Uri 'http://api.exemplo.com/envio' -Method Post -Body $body -ContentType 'application/json'
Write-Output $response

Deep Dive

O Invoke-RestMethod é um cmdlet disponível no PowerShell que simplifica o envio de requisições HTTP. Ele foi introduzido no PowerShell 3.0 e se tornou uma ferramenta principal para interações web. Alternativas incluem Invoke-WebRequest, mas este é mais verboso para trabalhar com APIs RESTful, uma vez que retorna mais dados e cabeçalhos de resposta. Em comparação, o Invoke-RestMethod retorna diretamente o conteúdo da resposta, frequentemente em um objeto PowerShell.

Numa requisição POST, comumente usa-se ConvertTo-Json para formatar corretamente o corpo da mensagem. A requisição será enviada com o header ‘Content-Type’ configurado para ‘application/json’ para que o servidor saiba como processar o corpo da mensagem.

Lembrando que você precisa lidar com autenticação, timeouts, e outros aspectos de uma conexão HTTP que podem ser configurados através de parâmetros adicionais do cmdlet.

See Also