J'ai utilisé avec succès Invoke-WebRequest
pour publier des demandes vers une API basée sur REST de PowerShell.
Invoke-WebRequest -UseBasicParsing https://my-rest-api.com/endpoint -ContentType "application/json" -Method POST -Body $json
Aujourd'hui, je suis tombé sur Invoke-RestMethod
ce qui semble plus bien nommé pour ce que je fais. Quelle est la différence et y a-t-il une raison d'utiliser l'un sur l'autre?
Get-Help
pages des deux applets de commande. Je suppose que cela aInvoke-RestMethod
été techniquement publié en premier, car le lien "Version en ligne"Get-Help
se termine par un nombre plus petit que celui trouvé surInvoke-WebRequest
la page de.Réponses:
Vous pouvez le découvrir en décompilant l'
Microsoft.PowerShell.Commands.Utility
assembly.Fondamentalement,
Invoke-WebRequest
ne traite pas beaucoup de l'analyse des données. Avec-UseBasicParsing
, il effectue une analyse HTML basée sur Regex. Sans ce commutateur, il utilisera l'API COM d'Internet Explorer pour analyser le document.C'est ça. Il essaiera toujours d'analyser le HTML.
Invoke-RestMethod
d'autre part, a du code pour prendre en charge le contenu JSON et XML. Il tentera de détecter un décodeur approprié. Il ne prend pas en charge le HTML (sauf pour le HTML compatible XML, bien sûr).Les deux partagent la même logique de base pour effectuer la demande HTTP réelle. Ce n'est que dans le traitement des résultats qu'ils diffèrent.
Voir c'est croire!
la source
systemcenterautomation.com a publié un blog à ce sujet . La conclusion:
la source