Ich habe erfolgreich verwendet Invoke-WebRequest
, um Anforderungen von PowerShell an eine REST-basierte API zu senden.
Invoke-WebRequest -UseBasicParsing https://my-rest-api.com/endpoint -ContentType "application/json" -Method POST -Body $json
Heute bin ich auf Invoke-RestMethod
etwas gestoßen, das für das, was ich tue, treffender benannt klingt. Was ist der Unterschied, und gibt es einen Grund, einen über den anderen zu setzen?
Get-Help
Seiten für beide Cmdlets. Ich würde spekulieren, dass dies zuerstInvoke-RestMethod
technisch veröffentlicht wurde, da der Link "Online-Version" amGet-Help
Ende mit einer kleineren Zahl als der aufInvoke-WebRequest
der Seite gefundenen endet .Antworten:
Sie können dies herausfinden, indem Sie die
Microsoft.PowerShell.Commands.Utility
Assembly dekompilieren .Grundsätzlich geht
Invoke-WebRequest
es nicht darum, die Daten so oft zu analysieren. Mit-UseBasicParsing
wird ein Regex-basiertes HTML-Parsing durchgeführt. Ohne diese Option wird die COM-API von Internet Explorer zum Parsen des Dokuments verwendet.Das ist es. Es wird immer versucht, HTML zu analysieren.
Invoke-RestMethod
Auf der anderen Seite gibt es Code zur Unterstützung von JSON- und XML-Inhalten. Es wird versucht, einen geeigneten Decoder zu finden. HTML wird nicht unterstützt (außer natürlich XML-konformes HTML).Beide verwenden dieselbe Kernlogik, um die eigentliche HTTP-Anfrage zu stellen. Sie unterscheiden sich nur in der Ergebnisverarbeitung.
Sehen heißt glauben!
quelle
systemcenterautomation.com hat einen Blog-Beitrag dazu verfasst . Das Fazit:
quelle