简体   繁体   中英

Schema issue with Kafka schema registry

I know I come to you with any news, but I'm stuck solving an issue that probably is my fault, indeed I can't realize what's the solution. I'm using a standalone installation of the Confluent platform (4.0.0 open source version) in order to demonstrate how to adopt the platform for a specific use case. Trying to demonstrate the value of using the schema registry I'm facing the following issue posting a new schema with Postman.

The request is:

http://host:8081/subjects/test/versions  
, method POST
, Header: Accept:application/vnd.schemaregistry.v1+json, application/vnd.schemaregistry+json, application/json
Content-Type:application/json
, Body: 
    {"schema":"{{\"namespace\":\"com.testlab\",\"name\":\"test\",\"type\":\"record\",\"fields\":[{\"name\":\"resourcepath\",\"type\":\"string\"},{\"name\":\"resource\",\"type\":\"string\"}]}}" }

The response is: {"error_code":42201,"message":"Input schema is an invalid Avro schema"}

Looking at docs and after googling a lot I'm without options. Any suggestion ? Thanks for your time R.

You have extra {} around the schema field.

One way to test this is with jq

Before

$ echo '{"schema":"{{\"namespace\":\"com.testlab\",\"name\":\"test\",\"type\":\"record\",\"fields\":[{\"name\":\"resourcepath\",\"type\":\"string\"},{\"name\":\"resource\",\"type\":\"string\"}]}}" }' | jq '.schema|fromjson'
jq: error (at <stdin>:1): Objects must consist of key:value pairs at line 1, column 146 (while parsing '{{"namespace":"com.testlab","name":"test","type":"record","fields":[{"name":"resourcepath","type":"string"},{"name":"resource","type":"string"}]}}')

After

$ echo '{"schema":"{\"namespace\":\"com.testlab\",\"name\":\"test\",\"type\":\"record\",\"fields\":[{\"name\":\"resourcepath\",\"type\":\"string\"},{\"name\":\"resource\",\"type\":\"string\"}]}" }' | jq  '.schema|fromjson'
{
  "namespace": "com.testlab",
  "name": "test",
  "type": "record",
  "fields": [
    {
      "name": "resourcepath",
      "type": "string"
    },
    {
      "name": "resource",
      "type": "string"
    }
  ]
}

See my comment here about importing AVSC files so that you don't need to type out the JSON on the CLI

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM