使用 Kafka 模式注册表注册一个新的 avro 模式 API
Register a new avro schema using Kafka schema-registry API
我正在尝试使用 kafka-schema-registery
api 创建一个新的 schema
。下面是实现:
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
。
任何人都可以帮助我了解我哪里出错了吗?
对于未来的用户:
我是这样解决这个问题的:
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)
});
我正在尝试使用 kafka-schema-registery
api 创建一个新的 schema
。下面是实现:
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
。
任何人都可以帮助我了解我哪里出错了吗?
对于未来的用户:
我是这样解决这个问题的:
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)
});