ArgoCD API应用PATCH请求报错求助:服务器无响应
针对你遇到的curl执行ArgoCD PATCH API返回空回复(curl: (52) Empty reply from server)的问题,结合你提供的信息,以下是几个关键修正点:
修正API URL路径
ArgoCD的应用PATCH端点需要指定应用所在的命名空间,正确的URL格式应为:https://my_domain/api/v1/applications/{appNamespace}/{appName}。你的应用在default命名空间,所以URL需改为:https://my_domain/api/v1/applications/default/argocd-seed-job
原URL未指定命名空间,会默认查询argocd命名空间下的应用,导致找不到资源引发异常。修正patchType参数值
根据ArgoCD的接口定义,patchType的合法取值为json-patch+json、merge-patch+json或strategic-merge-patch+json,你使用的merge是无效值,会导致服务器无法解析请求。如果要使用合并补丁,应改为merge-patch+json。修复patch字段的JSON转义问题
原命令中patch字段的JSON嵌套转义容易出错,建议使用--data-raw替代--data,避免shell转义干扰,同时简化JSON写法。另外,由于URL已经指定了应用的命名空间和名称,请求体中的appNamespace、name、project参数可以省略,减少冗余。
修正后的完整curl命令示例:
curl \ -H 'Content-Type: application/json' \ -H "Authorization: Bearer <token_from_create_session>" \ --data-raw '{ "patch": {"spec":{"source":{"targetRevision":"master"}}, "patchType": "merge-patch+json" }' \ -X PATCH \ https://my_domain/api/v1/applications/default/argocd-seed-job
如果问题仍存在,可以尝试以下排查步骤:
- 检查ArgoCD服务器日志,查看是否有请求处理错误的详细信息
- 确认token的权限是否包含
applications/update权限 - 用
-v参数执行curl,查看请求的详细交互过程,定位具体问题
内容的提问来源于stack exchange,提问作者Gerb

