Eu tenho usado Invoke-WebRequest
com êxito para postar solicitações para uma API baseada em REST do PowerShell.
Invoke-WebRequest -UseBasicParsing https://my-rest-api.com/endpoint -ContentType "application/json" -Method POST -Body $json
Hoje me deparei com Invoke-RestMethod
sons mais apropriados para o que estou fazendo. Qual é a diferença e existe um motivo para usar um sobre o outro?
Get-Help
páginas dos dois cmdlets. Especularia que issoInvoke-RestMethod
foi tecnicamente publicado primeiro, já que o link "Versão on-line"Get-Help
termina com um número menor do que o encontrado naInvoke-WebRequest
página da página.Respostas:
Você pode descobrir descompilando a
Microsoft.PowerShell.Commands.Utility
montagem.Basicamente,
Invoke-WebRequest
não lida com a análise de dados. Com-UseBasicParsing
, ele faz algumas análises de HTML baseadas em Regex. Sem essa opção, ele usará a API COM do Internet Explorer para analisar o documento.É isso aí. Ele sempre tentará analisar o HTML.
Invoke-RestMethod
por outro lado, possui código para suportar conteúdo JSON e XML. Ele tentará detectar um decodificador apropriado. Ele não suporta HTML (exceto HTML compatível com XML, é claro).Ambos compartilham a mesma lógica principal para fazer a solicitação HTTP real. É apenas no processamento de resultados que eles diferem.
Ver é crer!
fonte
systemcenterautomation.com fez um post sobre isso . A conclusão:
fonte