当前位置: 首页 > 知识库问答 >
问题:

Confluent schema-registry如何http post json-schema

从烈
2023-03-14

Confluent5.5.0不仅理解Avro模式,还理解json-schema和Protobuf。我有一个有效的json-schema,我正试图将其转换到schema registry服务器,但我一直得到响应

curl -X POST -H "Content-Type: application/vnd.schemaregistry.v1+json" \
     --data @$tmpfile ${schemaregistry}/subjects/${topic}-value/versions?schemaType=JSONSCHEMA
{"error_code":42201,"message":"Either the input schema or one its references is invalid"}

手册不清楚如何使用schematype参数。我尝试过作为查询参数,作为json中的字段,...我发布的$tmpfile是一个json,其中有一个名为schema的顶级字段,它包含一个引用转义的json-schema。同样的机制对于Avro模式非常有效。

查看模式注册表的日志记录,我看到它试图将提供的数据解析为Avro模式,因此难怪它会失败。

有人帮忙吗?和合流:请澄清并修正您的文档!

共有2个答案

赖星驰
2023-03-14

根据Confluent schema registry API文档,可以通过调用

curl --silent -X GET http://localhost:8081/schemas/types

这将导致

["JSON","PROTOBUF","AVRO"]

对于当前版本(5.5),因此输出可能有助于设置适当的schematype-attribute。

尽管如此,正如@Bart van deenen在这里指出的,API文档(仍然)是错误的。

朱刚捷
2023-03-14

啊,我明白了。文件不清不对!

您必须在发布的JSON中添加一个字段。字段名为schematype,其值必须是json,而不是jsonschema(文档中所说的)。

对于其他人,这里的示例展示了如何将带有avro和json模式的本地文件放入Schema-Registry:

#!/bin/bash
schemaregistry="$1"
tmpfile=$(mktemp)

topic=avro-topic
export SCHEMA=$(cat schema.avsc)
echo '{"schema":""}' | jq --arg schema "$SCHEMA" '.schema = $schema' \
   > $tmpfile
curl -X POST -H "Content-Type: application/vnd.schemaregistry.v1+json" \
    --data @$tmpfile ${schemaregistry}/subjects/${topic}-value/versions

topic=json-topic
export SCHEMA=$(cat schema.json)
echo '{"schema":"","schemaType":"JSON"}' | jq --arg schema "$SCHEMA" '.schema = $schema' \
   > $tmpfile
curl -X POST -H "Content-Type: application/vnd.schemaregistry.v1+json" \
    --data @$tmpfile ${schemaregistry}/subjects/${topic}-value/versions
rm $tmpfile
 类似资料:
  • Schema Registry Confluent Schema Registry provides a serving layer for your metadata. It provides a RESTful interface for storing and retrieving your Avro®, JSON Schema, and Protobuf schemas. It store

  • 允许将自定义的注册表插入到任务系统中,以期提供共享任务或增强功能。 注意: 只有用 task() 方法注册的任务才会进入自定义注册表中。直接传递给 series() 或 parallel() 的任务函数(task functions)不会进入自定义任务注册表 - 如果你需要自定义注册表的行为,请通过字符串引用的方式将任务(task)组合在一起。 分配新注册表时,将传输当前注册表中的每个任务,并将用

  • �� npm registry documentation A collection of archived documentation about registry endpoints/API If you're having issues with the website or registry itself pleasecontact npm's support staff.

  • 《分布式服务注册中心 XXL-REGISTRY》 为方便项目维护,该项目已经合并至 XXL-RPC :https://www.oschina.net/p/xxl-rpc

  • Registry Decoder是一款免费、开源的注册表取证分析工具,它可以自动获取、分析和报告windows注册表中的内容。Registry Decoder的主要目的是为注册表相关研究提供一个统一完整的平台,并且适用于所有人员。

  • Open-Registry - Open JavaScript Module Registry Website: https://open-registry.dev Preliminary npm proxy: https://npm.open-registry.dev LiberaPay for donations: https://liberapay.com/open-registry-com