Lo he estado utilizando Invoke-WebRequest
con éxito para publicar solicitudes en una API basada en REST de PowerShell.
Invoke-WebRequest -UseBasicParsing https://my-rest-api.com/endpoint -ContentType "application/json" -Method POST -Body $json
Hoy me encontré con lo Invoke-RestMethod
que suena más apropiado para lo que estoy haciendo. ¿Cuál es la diferencia, y hay alguna razón para usar una sobre la otra?
Get-Help
páginas de ambos cmdlets. Supongo queInvoke-RestMethod
se publicó técnicamente primero, ya que el enlace "Versión en línea"Get-Help
termina con un número menor que el que se encuentra enInvoke-WebRequest
la página.Respuestas:
Puede averiguarlo descompilando el
Microsoft.PowerShell.Commands.Utility
ensamblaje.Básicamente,
Invoke-WebRequest
no se trata de analizar mucho los datos. Con-UseBasicParsing
, realiza un análisis HTML basado en Regex. Sin este modificador, usará la API COM de Internet Explorer para analizar el documento.Eso es. Siempre intentará analizar HTML.
Invoke-RestMethod
por otro lado tiene código para soportar contenido JSON y XML. Intentará detectar un decodificador apropiado. No , no es compatible con HTML (a excepción de HTML compatible con XML, por supuesto).Ambos comparten la misma lógica central para realizar la solicitud HTTP real. Es solo en el procesamiento de resultados que difieren.
¡Ver es creer!
fuente
systemcenterautomation.com hizo una publicación de blog sobre esto . La conclusión:
fuente