通过Exchange REST API发布RAML文件至Exchange时报错
MuleSoft Exchange资产上传curl报错排查
核心报错原因
- 命令语法和运行环境不兼容:你执行命令用的是Windows CMD,但直接照搬了Linux/macOS环境的curl写法:
- CMD不支持单引号作为参数边界符,所有用单引号包裹的请求头、表单参数都被curl误识别为待访问的主机地址,才会出现连续的
Could not resolve host: bearer、Could not resolve host: asset这类域名解析错误 - 直接换行拆分参数没有加CMD要求的续行符
^,导致换行后的参数被当成独立命令解析
- CMD不支持单引号作为参数边界符,所有用单引号包裹的请求头、表单参数都被curl误识别为待访问的主机地址,才会出现连续的
- 认证头缺失:由于前面的Header参数解析完全失效,实际发往服务端的请求没有携带必填的
Authorization头,最终接口返回400错误,错误详情明确提示authorization头为必填项 - 隐藏问题点:
- 上传本地zip文件时,
-F参数的文件路径前缺少@标识,curl会直接把文件名字符串作为参数值提交,不会读取本地文件内容 - URL中的
:org id、:group id占位符需要替换为无空格的实际ID值,不能保留占位符格式和空格 - Bearer认证的标准写法首字母大写为
Bearer,部分网关版本会校验大小写
- 上传本地zip文件时,
修正后可直接在CMD运行的命令
将命令中占位符替换为你的实际组织ID、组ID,确认本地zip文件路径正确后执行即可:
curl -v -H "Authorization: Bearer b90ed1ce-671c-4726-9d25-4aacd7cb8bb4" ^ -H "x-sync-publication: true" ^ -F "name=RAML asset name" ^ -F "description=Description of the asset" ^ -F "keywords=this, is, the, best, raml" ^ -F "dependencies=68ef9520-24e9-4cf2-b2f5-620025690913:training-american-flight-data-type:1.0.1,68ef9520-24e9-4cf2-b2f5-620025690913:training-american-flights-example:1.0.1" ^ -F "properties.mainFile=american-flights-api.raml" ^ -F "properties.apiVersion=v1" ^ -F "files.raml.zip=@training-american-flights-api-1.0.0-raml.zip" ^ https://anypoint.mulesoft.com/exchange/api/v2/organizations/替换为你的实际orgId/assets/替换为你的实际groupId/doc-api-v2/1.0.0
内容的提问来源于stack exchange,提问作者heba_rachid
相关产品推荐
相关产品推荐

