我们一直在使用avroidl来定义Kafka后端使用的消息集,对此我们非常满意。我们还对将JSON
与带有Avro模式的Python Flask应用程序上的restapi绑定很感兴趣,并且遇到了一些困难。你知道吗
有各种各样的软件包在那里,但我还没有找到明确的工作方式,我需要它。我希望得到一些指导。你知道吗
我可以使用avdl
文件生成一组avsc
文件:
avro-tools idl2schemata message.avdl output_dir
或者
avro-tools idl message.avdl > output_dir/schema.avsc
我可以用python阅读这些内容,但是我发现没有什么“简单”的东西可以告诉我JSON输入是否与模式匹配。你知道吗
有人做过类似的事吗?我走错路了吗?如有任何建议,将不胜感激。你知道吗
我知道如果我在春靴球场踢球,这可能会很简单。你知道吗
谢谢
@namespace("org.jeeftor.avro")
protocol TacoRequest {
enum MeatType{
CHICKEN,
BEEF,
TURKEY,
FISH
}
enum CheeseType {
GROSS_VEGAN,
ACTUAL_COW_CHEESE,
GOAT_CHEESE
}
enum Toppings {
LECHUGA,
TOMATO,
SAUCE
}
record Taco {
MeatType meat;
CheeseType cheese;
array<Toppings> toppings;
}
record Order {
union { string, int } order_id;
array<Taco> tacos;
}
}
我用:avro-tools idl order.avdl protocol.avpr
生成模式
{
"protocol" : "TacoRequest",
"namespace" : "org.jeeftor.avro",
"types" : [ {
"type" : "enum",
"name" : "MeatType",
"symbols" : [ "CHICKEN", "BEEF", "TURKEY", "FISH" ]
}, {
"type" : "enum",
"name" : "CheeseType",
"symbols" : [ "GROSS_VEGAN", "ACTUAL_COW_CHEESE", "GOAT_CHEESE" ]
}, {
"type" : "enum",
"name" : "Toppings",
"symbols" : [ "LECHUGA", "TOMATO", "SAUCE" ]
}, {
"type" : "record",
"name" : "Taco",
"fields" : [ {
"name" : "meat",
"type" : "MeatType"
}, {
"name" : "cheese",
"type" : "CheeseType"
}, {
"name" : "toppings",
"type" : {
"type" : "array",
"items" : "Toppings"
}
} ]
}, {
"type" : "record",
"name" : "Order",
"fields" : [ {
"name" : "order_id",
"type" : [ "string", "int" ]
}, {
"name" : "tacos",
"type" : {
"type" : "array",
"items" : "Taco"
}
} ]
} ],
"messages" : { }
}
我的问题是如何轻松地使用这个“模式”来验证输入。你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐