Kod*_*lie 6 confluent-schema-registry confluent-platform
OS: Ubuntu 18.x
docker image (from dockerhub.com, as of 2020-09-25): confluentinc/cp-schema-registry:latest
Run Code Online (Sandbox Code Playgroud)
我正在探索 Confluence 架构注册表的 HTTP API。首先,是否存在关于注册表假定的 JSON 架构定义版本的明确断言?目前,我假设Draft v7.0。更广泛地说,我认为返回受支持架构的 API 应该列出版本。例如,而不是:
$ curl -X GET http://localhost:8081/schemas/types
["JSON","PROTOBUF","AVRO"]
Run Code Online (Sandbox Code Playgroud)
你将会拥有:
$ curl -X GET http://localhost:8081/schemas/types
[{"flavor": "JSON", "version": "7.0"}, {"flavor": "PROTOBUF", "version": "1.2"}, {"flavor": "AVRO", "version": "3.5"}]
Run Code Online (Sandbox Code Playgroud)
所以至少程序员会确切地知道模式注册表的假设。
抛开这个问题不谈,我似乎无法将一个相当简单的 JSON 模式发布到注册表:
$ curl -X POST -H "Content-Type: application/vnd.schemaregistry.v1+json" --data '{ "schema": "{ \"type\": \"object\", \"properties\": { \"f1\": { \"type\": \"string\" } } }" }' http://localhost:8081/subjects/mytest-value/versions
{"error_code":42201,"message":"Either the input schema or one its references is invalid"}
Run Code Online (Sandbox Code Playgroud)
在这里,我将架构发布到mytest主题。顺便说一句,该模式是我从 Confluence 文档中抓取的,然后相应地对其进行了转义。
你能说出为什么这个模式没有发布到注册表吗?更一般地说,我可以假设完全支持 JSON 架构定义的 Draft v7.0 吗?
您需要传递 schemaType 标志。“如果未提供 schemaType,则假定 schemaType 为 AVRO。” https://docs.confluence.io/current/schema-registry/develop/api.html#post--subjects-(string-%20subject)-versions:
'{"schemaType":"JSON","schema":"{\"type\":\"object\",\"fields\":[{\"name\":\"f1\",\"type\":\"string\"}]}"}'
Run Code Online (Sandbox Code Playgroud)
我同意支持版本的输出会很有帮助。
| 归档时间: |
|
| 查看次数: |
3387 次 |
| 最近记录: |