PowerShell:
Envoi d'une requête HTTP
How to:
Faire une requête HTTP simple en PowerShell ? C’est assez direct. Utilisez Invoke-RestMethod
ou Invoke-WebRequest
. Voilà deux exemples:
# Obtenez des données JSON d'une API
$response = Invoke-RestMethod -Uri 'https://api.exemple.com/data' -Method Get
$response | ConvertTo-Json
# Postez des données vers une API
$body = @{nom='Dupont'; prenom='Jean'} | ConvertTo-Json
Invoke-RestMethod -Uri 'https://api.exemple.com/user' -Method Post -Body $body -ContentType 'application/json'
Et pour voir les résultats :
# Affichez les détails de la réponse après une requête Get
$response
# Résultat après le Post, souvent la ressource créée ou un message de succès
# (dépend de l'API)
Deep Dive
Les requêtes HTTP n’ont pas toujours été aussi simples en PowerShell. Avant la commande Invoke-RestMethod
, introduite dans la version 3.0, on utilisait System.Net.WebClient
ou System.Net.HttpWebRequest
. Ces classes .NET sont toujours disponibles mais Invoke-RestMethod
est plus haut niveau et facile à utiliser.
Pourquoi choisir l’une sur l’autre ? Invoke-RestMethod
est idéale pour travailler avec des API RESTful. Elle parse automatiquement le JSON ou XML. En revanche, Invoke-WebRequest
donne plus de contrôle sur la requête HTTP elle-même – utile si vous avez besoin des headers, du status, etc.
Dernier point, pour une application asynchrone ou très performante, envisagez de passer par les fonctionnalités asynchrones dans .NET avec HttpClient
.
See Also
Bon codage avec PowerShell et les requêtes HTTP !