Je veux faire une demande POST dans PowerShell. Voici les détails du corps dans Postman.
{
"@type":"login",
"username":"[email protected]",
"password":"yyy"
}
Comment passer cela dans PowerShell?
Vous devriez pouvoir effectuer les opérations suivantes:
$params = @{"@type"="login";
"username"="[email protected]";
"password"="yyy";
}
Invoke-WebRequest -Uri http://foobar.com/endpoint -Method POST -Body $params
Cela enverra le message en tant que corps. Cependant - si vous souhaitez publier ceci en tant que Json, vous voudrez peut-être être explicite. Pour publier ceci en tant que JSON, vous pouvez spécifier le ContentType et convertir le corps en Json en utilisant
Invoke-WebRequest -Uri http://foobar.com/endpoint -Method POST -Body ($params|ConvertTo-Json) -ContentType "application/json"
Extra: Vous pouvez également utiliser l'Invoke-RestMethod pour traiter avec JSON et REST apis (ce qui vous fera économiser quelques lignes supplémentaires pour la désérialisation))
Utilisation Invoke-RestMethod
pour consommer les API REST. Enregistrez le JSON dans une chaîne et utilisez-le comme corps, par exemple:
$JSON = @'
{"@type":"login",
"username":"[email protected]",
"password":"yyy"
}
'@
$response = Invoke-RestMethod -Uri "http://somesite.com/oneendpoint" -Method Post -Body $JSON -ContentType "application/json"
Si vous utilisez Powershell 3, je sais qu'il y a eu des problèmes avec Invoke-RestMethod
, mais vous devriez pouvoir utiliser Invoke-WebRequest
en remplacement:
$response = Invoke-WebRequest -Uri "http://somesite.com/oneendpoint" -Method Post -Body $JSON -ContentType "application/json"
Si vous ne souhaitez pas écrire votre propre JSON à chaque fois, vous pouvez utiliser une table de hachage et utiliser PowerShell pour le convertir en JSON avant de le publier. Ex.
$JSON = @{
"@type" = "login"
"username" = "[email protected]"
"password" = "yyy"
} | ConvertTo-Json