Зарегистрируйте новую схему avro с помощью API-интерфейса схемы Kafka

Я пытаюсь создать новый schema используя kafka-schema-registeryapi. Ниже представлена ​​реализация:

let value = JSON.stringify(avroSchema);

let type= {"schema" : value}; 

 fetch(`${process.env.SCHEMA_REGISTRY_URL}/subjects/${topic}/versions`,
        { 
          body : type,  
          method : 'POST', 
          headers :{ 'Content-Type': 'application/vnd.schemaregistry.v1+json,
                                      application/vnd.schemaregistry+json, application/json',
                     'Accept' : 'application/vnd.schemaregistry.v1+json,
                                 application/vnd.schemaregistry+json, application/json'            
        }
        })
    .then(res=>res.json())
    .then((result)=>{
        console.log('result is ', result);   
         resolve(result);    
     })
    .catch((err)=>{
        console.log('err',err);
        reject(err);
    })

Вот как avroSchema выглядит:

const avroSchema = {
      "type": "record",
      "name": "test",
      "fields" : [
            {"name": "field", "type": "long"},
    ]
  };

Когда я выполняю этот код, я получаю 500 - Internal server error.

Может ли кто-нибудь помочь мне понять, где я ошибаюсь?

2 ответа

Решение

Для будущих пользователей:

Вот как я смог это решить:

 const payload = {
                   "schema": JSON.stringify(avroSchema)
                 }; 

Наконец, после установки полезной нагрузки сделайте POST запрос options как показано ниже:

const options = {
  method: 'POST',
  url: `${process.env.SCHEMA_REGISTRY_URL}/subjects/${topicName}-value/versions`,
  headers: { 'Content-Type': 'application/vnd.schemaregistry.v1+json' },
  body: payload,
  json: true
}

затем сделайте запрос:

request(options, function (error, response, body) {
    if (error) {
        reject(error);
    }                   
    resolve(body)
});

Ошибка существует на сервере, и ваш код выглядит нормально, но я предлагаю использовать пакеты NPM, а не заново изобретать колесо - https://www.npmjs.com/package/avro-schema-registry

Другие вопросы по тегам