Windows CMD环境下如何基于JSON文件拆分Curl POST请求
Windows Server 2016下批量POST JSON对象到API的解决方案
需求回顾
需要将OUTPUT.JSON中的每个员工对象单独通过POST请求发送到目标API:
- 每个请求的URL必须包含对应对象的
employerReferenceId - 请求体仅包含当前员工的JSON数据
- 原Bash+JQ方案在Windows Server 2016环境下难以落地,需适配Windows环境的方案
示例JSON数据集(OUTPUT.JSON)
[ { "initials": "V.", "firstName": "Victor", "lastNamePrefix": " ", "lastName": "Rutherford", "employerReferenceId": "0258741", "jobDescription": "Rental" }, { "initials": "P.", "firstName": "Pippa", "lastNamePrefix": " ", "lastName": "Lewis", "employerReferenceId": "98765431", "jobDescription": "Rental" }, { "initials": "S.", "firstName": "Stephanie", "lastNamePrefix": " ", "lastName": "Reid", "employerReferenceId": "123456789", "jobDescription": "Rental" } ]
目标请求格式
curl -X POST "https://website.eu/test-Company/api2/external-employees/[EMPLOYERREFERENCEID]" -H "accept: application/json" -H "Authorization: Token {TOKEN}" -H "Content-Type: application/json" -d "@单个员工对象的JSON"
方案1:使用PowerShell(无需额外安装工具)
Windows Server 2016自带PowerShell 5.1,可直接编写脚本实现批量请求:
# 替换为你的实际TOKEN $authToken = "你的授权TOKEN" $apiBaseUrl = "https://website.eu/test-Company/api2/external-employees/" # 读取并解析JSON文件 $employeeList = Get-Content -Path "OUTPUT.JSON" -Raw | ConvertFrom-Json # 遍历每个员工对象发送请求 foreach ($employee in $employeeList) { # 构造带employerReferenceId的请求URL $requestUrl = "$apiBaseUrl$($employee.employerReferenceId)" # 将当前员工对象转为压缩JSON字符串作为请求体 $requestBody = $employee | ConvertTo-Json -Compress # 发送POST请求(使用PowerShell原生cmdlet) Invoke-RestMethod -Uri $requestUrl -Method Post -Headers @{ "accept" = "application/json" "Authorization" = "Token $authToken" "Content-Type" = "application/json" } -Body $requestBody # 可选:如果偏好使用curl,替换上面的Invoke-RestMethod为以下命令 # curl -X POST "$requestUrl" -H "accept: application/json" -H "Authorization: Token $authToken" -H "Content-Type: application/json" -d "$requestBody" }
使用说明
- 将脚本保存为
BatchPostEmployees.ps1 - 替换
$authToken为你的实际授权令牌 - 打开PowerShell,切换到脚本和JSON文件所在目录,执行:
.\BatchPostEmployees.ps1
方案2:使用Git Bash + JQ(需额外安装工具)
如果更习惯Bash环境,可以安装Git for Windows(自带Git Bash和JQ工具),然后使用类似原方案的脚本:
# 替换为你的实际TOKEN AUTH_TOKEN="你的授权TOKEN" API_BASE_URL="https://website.eu/test-Company/api2/external-employees/" # 遍历JSON中的每个对象,发送POST请求 jq -c '.[]' OUTPUT.JSON | while read -r employee_json; do # 提取当前对象的employerReferenceId employer_id=$(echo "$employee_json" | jq -r '.employerReferenceId') # 发送curl请求 curl -X POST "${API_BASE_URL}${employer_id}" \ -H "accept: application/json" \ -H "Authorization: Token $AUTH_TOKEN" \ -H "Content-Type: application/json" \ -d "$employee_json" done
使用说明
- 安装Git for Windows后,打开Git Bash
- 切换到JSON文件所在目录,执行上述脚本
内容的提问来源于stack exchange,提问作者Randy
相关产品推荐
相关产品推荐

