json - 使用 Powershell 运行多个迭代 API 调用
问题描述
我需要为 1000 个不同的 URI 运行 1000 个 API 调用。我尝试一次性运行 1000 个不同的 URI,如下所示,但 API 限制为 1000 行。有没有一种方法可以运行此代码 1000 次,生成 1000 个单独的 JSON 文件或在一个 JSON 文件中,而我不必单独使用 powershell 脚本运行 URI。
$access_token ="dfdfgdfgf45h5676rdffghfghfbazbfgjvdrtwsffrgr"
$LogPath ='C:\StackOVerflow'
$URI = 'https://api.web.ser/audits/a_80weqwepeopeoA'
'https://api.web.ser/audits/a_B0980kdfl;skfd'
'https://api.web.ser/audits/a_Csdfsdfsjlksdc'
'https://api.web.ser/audits/a_Tlksdjfalkjdff'
'https://api.web.ser/audits/a_Fldkfjlsfjdfdl'
'https://api.web.ser/audits/a_Fsdfsdfsdfsd34'
'https://api.web.ser/audits/a_G34gfgf4ffsdrf'
'https://api.web.ser/audits/a_Haere34534fdgf'
'https://api.web.ser/audits/a_Ifdl023lererew'
'https://api.web.ser/audits/a_Afrererl45645w'
$headers = @{“authorization” = “Bearer $access_token”}
$result = Invoke-RestMethod -Uri $URI -Headers $headers |ConvertTo-Json| out-file "$LogPath\id_ExtractLogs$(((get-date).ToString("yyyyMMdd"))).json"
$result
解决方案
您不能将数组传递uri
给Invoke-RestMethod
cmdlet;它们必须被迭代。
这是一个有效的解决方案:
$uri = 'https://api.web.ser/audits'
$reportList = @(
'a_80weqwepeopeoA'
'a_B0980kdfl;skfd'
# .. etc.
)
$token = 'secret'
$headers = @{ Headers = @{ Authorization = "Bearer $token" }}
$logPath = 'C:\StackOverflow'
foreach ($report in $reportList) {
$stamp = Get-Date -Format FileDateTime
Invoke-RestMethod -Uri "$uri/$report" -OutFile "$logPath\id_$stamp.json" @headers
}
推荐阅读
- r - 有没有办法删除ggplot之外的空白?
- asp.net - 如何在具有标识和干净架构的 EF Core 中定义一对零或一关系?
- jenkins - 詹金斯无法运行“terraform apply --auto-approve”
- swift - Swift ui macOS menuBar NSPopover 无箭头
- angular - 使用 NGXS 状态/路由器进行 Angular/Jest 单元测试
- python - 使用 Python 进行缩放 SVD
- python - 为什么我的 python 请求使用 PRIVOXY 和 TOR 以 503 状态失败?
- python - PyTorch 中的可重复性与 K 折交叉验证
- java - Logstash 从位于 Json 中的消息字段中提取字段
- excel - 突出显示基于 A 列的重复行,但排除在 B 列中具有特定值的任何行