使用curl注册Kafka Schema Registry schema时报错如何处理?
报错触发原因
- Shell 引号转义规则不匹配:你当前使用的双引号重复(
"")是Windows CMD环境下的转义规则,在Linux/macOS的Bash/Zsh等Shell中不生效,Shell会将请求体拆分为多个独立参数,导致curl误把schema等字段内容当成新的请求地址解析,触发Could not resolve host: schema报错。 - JSON结构不完整:你提交的请求体存在多处语法缺失:AVRO Schema未闭合
fields数组、未闭合整个Record对象,schema字符串值缺少结束引号,最外层的请求体对象也缺少闭合大括号,服务端接收后无法解析JSON格式,触发字符格式错误。 - curl通配符解析冲突:curl默认开启glob通配符解析,未正确转义的嵌套大括号会被识别为通配符表达式,触发
[globbing] nested brace报错。
修复方案
调整后的完整可执行命令如下:
curl -i -XPOST -u "accesskey:secretkey" \ -H "Content-Type: application/vnd.schemaregistry.v1+json" \ -g \ https://schema-registry.nonprod.us-west-2.aws.proton.x.com/subjects/tracking-info-publish-avro-value/versions \ --data '{ "schema": "{\"type\":\"record\",\"name\":\"ShipmentNotification\",\"namespace\":\"com.x.ordertrackinginfo.eventschema\",\"fields\":[{\"name\":\"sellingStoreNumber\",\"type\":\"int\"}]}" }'
本次调整的核心改动点:
- 把请求体内部的双引号统一使用反斜杠
\转义,符合Shell转义规则 - 补全所有缺失的JSON闭合符号:新增
]闭合fields数组,补全AVRO Schema的闭合大括号,补全schema字符串的结束引号,补全最外层请求体的闭合大括号 - 新增
-g参数关闭curl的glob通配符解析,避免大括号被误识别为通配符
内容的提问来源于stack exchange,提问作者Pinky
相关产品推荐
相关产品推荐

