在 powershell 中调用 Rest API 并等待响应

Invoke Rest APIs in powershell and await for the response

我是 PowerShell 的新手。我正在 运行 在一个 powershell 脚本中使用 Invoke-RestMethod 调用多个 rest API,在第二个 rest api 调用 returns 200,但它在需要时失败去做。看起来它失败了,因为第一个 API 端点尚未完成工作。

因为当我 运行 第二个 api 在单独的脚本中分开时,它 运行 没问题。 powershell invoke-rest方法函数中是否有异步和等待

当前代码


try {
    #First Rest API It works fine
    Invoke-RestMethod -Uri $uri -Method Post -Headers $headers -Body $body  
}
catch {
    Write-Host "Failed"
    
}

try {
    #Second Rest API This returns 200 but does not do the work and if I run this API in a separate script
    #It runs fine in a separate script
    Invoke-RestMethod -Uri $uri -Method Post -Headers $headers -Body $body  
}
catch {
    Write-Host "Failed"  
}

只是想看看能不能等待第一个休息方法

就像 Mathias 在他们的评论 Invoke-RestMethod 中所说的那样 return 只有当它完成它正在做的事情时 API。

如果您正在使用的 API 有一个 GET 方法,可以让您获得相关 POST 的状态,您可以这样做。

Invoke-RestMethod -Uri $uri -Method Post -Headers $headers -Body $body
do
{
    # Let's assume it returns a string: "OK"
    $status = Invoke-RestMethod -Uri $uri -Method Get -Headers $headers
}
while($status -ne "OK")