提取protobuf定义文件结构

 

先安装protobuf的js支持包

npm install protobufjs

test.proto文件如下所示

syntax = "proto3";

package Test;

service Serv {
    rpc ApiOne (ServOneRequest ) returns (stream ServOneReply) {};
}
service ServTwo{
    rpc ApiTwo(ServTwoRequest)returns(ServTwoReply){};
}
message ServOneRequest{
    string SyllabusID=1;
}
message ServOneReply{
    string SyllabusID=1;
}
message ServTwoRequest{
    repeated string Id=1;
}
message ServTwoReply{
    EnumV EnumDemo=1;
}
enum EnumV 
{
    no = 0; yes = 1; }

 

 load方法用于加载proto文件

var protobuf = require("protobufjs");
protobuf.load('F:/node-demo/test.proto', function (err, root) {
//....
})

root对象:

上图中Test命名空间对应proto中的package Test

展开Test对象

 

 

 Test对象包含文件的所有信息,如文件地址,服务,接口,message等nestedArrar包含文件内的所有结构(我粗略的理解为所有顶层的定义都在nestedArrar对象中),在这个对象中Service表示服务,Type表示message,Enum表示枚举,如需确定子元素具体类型可以从原型拿到,如

 root.Test.nestedArray[0].__proto__.constructor.className
//Service

 

 继续向下查找包括具体的字段名字段属性,name,类型等都在里边这里就不一一展示了。

------------------分割线---------------------------------

提取注释

看了一上午官方文档终于找到了提取文件中注释的方法,上图中每个消息、服务、字段等等属性里都有一个comment字段用于存放注释,注释编写规范为/**注释文本*/,官方规范说支持C/C++注释原文如下

有兴趣的朋友可以去测试一下

转载于:https://www.cnblogs.com/sgyBlog/p/10112083.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值