Z powodzeniem Invoke-WebRequest
wysyłam żądania do interfejsu API opartego na REST z PowerShell.
Invoke-WebRequest -UseBasicParsing https://my-rest-api.com/endpoint -ContentType "application/json" -Method POST -Body $json
Dzisiaj natknąłem się na to, Invoke-RestMethod
co brzmi bardziej trafnie nazwane dla tego, co robię. Jaka jest różnica i czy istnieje powód, aby używać jednego nad drugim?
Get-Help
stronach obu poleceń cmdlet. Spekulowałbym, żeInvoke-RestMethod
technicznie opublikowano go jako pierwszy, ponieważ link „Wersja online”Get-Help
kończy się na mniejszym numerze niż ten znaleziony naInvoke-WebRequest
stronie.Odpowiedzi:
Możesz dowiedzieć się, dekompilując
Microsoft.PowerShell.Commands.Utility
zestaw.Zasadniczo
Invoke-WebRequest
nie zajmuje się zbytnio analizowaniem danych. Za pomocą-UseBasicParsing
wykonuje parsowanie HTML oparte na Regex. Bez tego przełącznika użyje interfejsu API COM programu Internet Explorer do parsowania dokumentu.to jest to! Zawsze będzie parsował HTML.
Invoke-RestMethod
z drugiej strony ma kod do obsługi treści JSON i XML. Spróbuje wykryć odpowiedni dekoder. Robi nie wspiera HTML (z wyjątkiem HTML XML zgodnych, oczywiście).Oba mają tę samą podstawową logikę, aby wykonać rzeczywiste żądanie HTTP. Różnią się tylko przetwarzaniem wyników.
Zobaczyć to uwierzyć!
źródło
systemcenterautomation.com napisał na ten temat post na blogu . Konkluzja:
źródło