Invoke-RestMethod 需要更长的时间才能从 Rest 获得响应 API
Invoke-RestMethod is taking longer time to get response from Rest API
我有一个 API http://xx.yy.zz.aaa:8080/api/2.0/GetVersion
,我需要从 Powershell 脚本中点击它。当我尝试使用 Invoke-RestMethod
击中它时,它会在 10 minutes
.
中给出响应
当我使用 Invoke-WebRequest
击中相同的 API 时,我得到相同的响应 10 minutes
。
我在调用 API 之前添加了 $ProgressPreference = 'SilentlyContinue'
,但似乎没有效果。
而如果我使用 Invoke-WebRequest
或 Invoke-RestMethod
从 PowerShell 中点击相同的 API,我会在几秒钟内得到响应。我的 powerShell 版本是 5.1.14393.4530
这是我的脚本:
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$pair = "$($username):$($password)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$headers.Add("Authorization", "Basic $encodedCreds")
function verifyDeployment($vapor_env, $headers) {
try {
$uri = "http://{0}:8080/api/2.0/{1}" -f "xx.yy.zz.aaa", "GetVersion"
$ProgressPreference = 'SilentlyContinue'
$response = Invoke-WebRequest -URI $uri -Method Get -Headers $headers -UseBasicParsing
$statusCode = $response | Select-Object -Expand StatusCode
Write-Output $response, $uri, $statusCode, $api
if ($statusCode -eq 200) {
$version = $response | Select-Object -Expand Content | ConvertFrom-Json | Select-Object -Expand Version
if ($version -eq "12.14.90") {
Write-Output "Version matched."
}
else {
Write-Output "Version didn't match."
}
}
else {
Write-Output "Couldn't hit API."
}
}
catch {}
}
verifyDeployment $vapor_env $headers
我可以做些什么来减少响应时间。
谢谢。
此问题是由于来自 API 的大量响应数据造成的。现在我正在使用分页,它大大减少了响应时间。
我有一个 API http://xx.yy.zz.aaa:8080/api/2.0/GetVersion
,我需要从 Powershell 脚本中点击它。当我尝试使用 Invoke-RestMethod
击中它时,它会在 10 minutes
.
当我使用 Invoke-WebRequest
击中相同的 API 时,我得到相同的响应 10 minutes
。
我在调用 API 之前添加了 $ProgressPreference = 'SilentlyContinue'
,但似乎没有效果。
而如果我使用 Invoke-WebRequest
或 Invoke-RestMethod
从 PowerShell 中点击相同的 API,我会在几秒钟内得到响应。我的 powerShell 版本是 5.1.14393.4530
这是我的脚本:
$headers = New-Object "System.Collections.Generic.Dictionary[[String],[String]]"
$pair = "$($username):$($password)"
$encodedCreds = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes($pair))
$headers.Add("Authorization", "Basic $encodedCreds")
function verifyDeployment($vapor_env, $headers) {
try {
$uri = "http://{0}:8080/api/2.0/{1}" -f "xx.yy.zz.aaa", "GetVersion"
$ProgressPreference = 'SilentlyContinue'
$response = Invoke-WebRequest -URI $uri -Method Get -Headers $headers -UseBasicParsing
$statusCode = $response | Select-Object -Expand StatusCode
Write-Output $response, $uri, $statusCode, $api
if ($statusCode -eq 200) {
$version = $response | Select-Object -Expand Content | ConvertFrom-Json | Select-Object -Expand Version
if ($version -eq "12.14.90") {
Write-Output "Version matched."
}
else {
Write-Output "Version didn't match."
}
}
else {
Write-Output "Couldn't hit API."
}
}
catch {}
}
verifyDeployment $vapor_env $headers
我可以做些什么来减少响应时间。
谢谢。
此问题是由于来自 API 的大量响应数据造成的。现在我正在使用分页,它大大减少了响应时间。