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

Anypoint平台Shell脚本创建MuleSoft API策略失败求助

解决Anypoint API策略创建时的换行符问题

问题核心

生成的policy.json文件仅包含CR(回车符)换行,不符合API端点预期的LF(换行符)或CRLF格式,导致即使字段值正确,仍被判定为缺失groupId/assetId/assetversion属性。

解决方法

1. 修正JSON文件生成逻辑

如果是通过echo或字符串拼接生成JSON,改用printf强制输出LF换行:

# 示例:生成JSON时添加LF结尾
printf '{"configurationData": {"property1": "%s","property2": "%s"},"pointcutData": null,"policyTemplateId": "%s","groupId": "%s","assetId": "%s","assetversion": "%s"}\n' \
  "$prop1" "$prop2" "$templateId" "$groupId" "$assetId" "$assetVersion" > "$policy.json"

2. 强制转换文件换行符

使用工具或命令将文件转换为LF/CRLF格式:

  • 用dos2unix/unix2dos(GitLab CI runner通常自带):
    # 转换为LF格式
    dos2unix "$policy.json"
    # 或转换为CRLF格式
    unix2dos "$policy.json"
    
  • 用sed处理:
    # 将CR替换为LF
    sed -i 's/\r/\n/g' "$policy.json"
    # 确保文件末尾有LF
    sed -i '$a\' "$policy.json"
    
  • 用awk处理:
    awk '{print}' "$policy.json" > temp.json && mv temp.json "$policy.json"
    

3. 检查GitLab CI Runner环境

确认runner的Git换行符配置未被修改,避免自动转换文件格式:

git config --global core.autocrlf false

4. 直接通过curl传递JSON(绕过文件)

取消中间JSON文件,直接将内容传给curl,彻底规避换行符问题:

policy_result=$(curl --silent -X POST "https://anypoint.mulesoft.com/apimanager/api/v1/organizations/$orgId/environments/$envId/apis/$apiid/policies" \
  -H "Authorization: Bearer $access_token" \
  -H "Content-Type: application/json" \
  -d '{
    "configurationData": {"property1": "value1","property2": "value2"},
    "pointcutData": null,
    "policyTemplateId": "12345",
    "groupId": "uidhud65gfu9guyfwydt",
    "assetId": "client-id-enforcement",
    "assetversion": "1.2.0"
  }')

额外注意:原curl命令的拼写错误

请修正以下错误,否则也会导致请求失败:

  • -x POST → -X POST(大写X指定HTTP请求方法)
  • URL中的envirenments → environments(拼写错误)
  • accesss_token → access_token(多了一个s)
  • content Type → Content-Type: application/json(HTTP头格式错误)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 22:38:24