【发布时间】:2023-05-29 18:24:02
【问题描述】:
对于我们的许多服务,我们都有大型的 thrift IDL,其中类型可以非常深入。但是,很难可视化各种类型是如何相关/嵌套的。
可视化各种 thrift 对象的对象图的最简单方法是什么?例如,是否有任何东西可以将节俭的 IDL 类型转换为 JSON 漂亮的打印?还是可以显示类型层次结构树形图的 IDE 扩展?
【问题讨论】:
标签: json treeview visualization thrift
对于我们的许多服务,我们都有大型的 thrift IDL,其中类型可以非常深入。但是,很难可视化各种类型是如何相关/嵌套的。
可视化各种 thrift 对象的对象图的最简单方法是什么?例如,是否有任何东西可以将节俭的 IDL 类型转换为 JSON 漂亮的打印?还是可以显示类型层次结构树形图的 IDE 扩展?
【问题讨论】:
标签: json treeview visualization thrift
您可以尝试使用graphviz 生成器。
thrift -gen gv <idlfile>
这是我不久前用于其他目的的一个示例:
namespace * Testcase
struct BasicNeeds {
1 : optional double beerLiters = 1.23
2 : optional string beerName = "Heineken"
}
enum Steak {
Raw = 0,
Rare = 1,
Medium = 2,
WellDone = 3,
Coal = 4
}
enum Requirement {
SpeakMyLanguage = 0,
FreeCoffee = 1,
GoodService = 2,
TakeCreditCards = 3,
AllYouCanEat = 4
}
typedef list< Requirement> FurtherRequirements
struct TableSize {
1 : optional i32 Width = 20
2 : optional i32 Length = 40
}
struct PlaceOrder {
1 : required BasicNeeds BasicNeeds
2 : required Steak Kind = Steak.Medium
3 : optional FurtherRequirements FurtherRequirements
4 : bool FirstVisit = false
5 : optional TableSize Table
}
union OrderResult {
1 : bool Success
2 : bool SorryOutOfSteaks
3 : bool SorryClosed
4 : double UnpaidBillFromLastVisit
}
exception DinerError {
1 : string Msg
}
service Diner {
OrderResult PlaceOrder( 1 : PlaceOrder request) throws ( 1: DinerError rex),
OrderResult PlaceOrder2( 1 : PlaceOrder request, 2: i32 numberOfSteaks) throws ( 1: DinerError rex),
PlaceOrder TryReversed( 1 : OrderResult request)
}
【讨论】: