You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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"
}

使用说明

  1. 将脚本保存为BatchPostEmployees.ps1
  2. 替换$authToken为你的实际授权令牌
  3. 打开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

使用说明

  1. 安装Git for Windows后,打开Git Bash
  2. 切换到JSON文件所在目录,执行上述脚本

内容的提问来源于stack exchange,提问作者Randy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 20:55:17