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.