PowerShellでPOSTリクエストを作成します。Postmanの本文の詳細は次のとおりです。
{
"@type":"login",
"username":"[email protected]",
"password":"yyy"
}
PowerShellでこれを渡すにはどうすればよいですか?
次のことができるはずです。
$params = @{"@type"="login";
"username"="[email protected]";
"password"="yyy";
}
Invoke-WebRequest -Uri http://foobar.com/endpoint -Method POST -Body $params
これにより、投稿が本文として送信されます。ただし、これをJsonとして投稿する場合は、明示的にする必要があります。これをJSONとして投稿するには、ContentTypeを指定し、次のコマンドを使用して本文をJsonに変換できます。
Invoke-WebRequest -Uri http://foobar.com/endpoint -Method POST -Body ($params|ConvertTo-Json) -ContentType "application/json"
追加: JSONおよびREST apisを処理するためにInvoke-RestMethodを使用することもできます(これにより、シリアル化解除のために余分な行が節約されます)
REST-APIを使用するには、 Invoke-RestMethod
を使用します。 JSONを文字列に保存し、それを本文として使用します。例:
$JSON = @'
{"@type":"login",
"username":"[email protected]",
"password":"yyy"
}
'@
$response = Invoke-RestMethod -Uri "http://somesite.com/oneendpoint" -Method Post -Body $JSON -ContentType "application/json"
Powershell 3を使用している場合、Invoke-RestMethod
に問題があったことはわかっていますが、Invoke-WebRequest
を代わりに使用できるはずです。
$response = Invoke-WebRequest -Uri "http://somesite.com/oneendpoint" -Method Post -Body $JSON -ContentType "application/json"
毎回独自のJSONを書きたくない場合は、ハッシュテーブルを使用し、PowerShellを使用してJSONに変換してから投稿することができます。例.
$JSON = @{
"@type" = "login"
"username" = "[email protected]"
"password" = "yyy"
} | ConvertTo-Json