根据Golang定义的接口生成proto文件

akkagao · · 4052 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
# go2proto **不用了解Protobuf语法也能轻松使用golang开发GRPC服务** go2proto 可以很轻松的根据Golang定义的接口生成proto文件,很大程度简化GRPC服务的开发工作。当公司要使用GRPC开发项目的时候就不用再感叹`学不动了` ## show code - 创建一个user.go, 写入如下内容 ```go package server type User interface { Createuser(request Request) Response } type Request struct { Name string } type Response struct { Result string } ``` - 生成proto文件 在user.go 同目录下执行 ` go2proto -f user.go` 就会自动在当前目录的proto文件夹生成user.proto 文件 ```protobuf // Code generated by go2proto. DO NOT EDIT. syntax = "proto3"; package proto; service User { rpc Createuser (Request) returns (Response) {} } message Request { string Name = 1; } message Response { string Result = 1; } ``` 是不是很简单呢,可以完全不用了解Protobuf语法,只要用Go定义接口就可以 ## 安装 ```shell go get -u github.com/akkagao/go2proto ``` ## 使用 安装完执行 go2proto 如果能输出一下内容则说明安装成功 ```shell ➜ go2proto git:(master) ✗ go2proto go2proto version: go2proto/1.0.0 Usage: go2proto [-f] [-t] Options: -f string source file path -t string proto file target path (default "proto") ``` -f 参数用于指定 go接口文件 -t 参数用于指定生成的proto文件存储的目录 ## 注意事项 由于这里定义服务的go文件只是用于生成proto文件,建议不要在代码中引用这里定义的struct。 切记由于proto中的字段顺序都是有编号的,所以不要轻易删除字段或修改字段顺序。尤其是项目发布后。 重要的事情说三遍: **不要删除字段,不要修改顺序** **不要删除字段,不要修改顺序** **不要删除字段,不要修改顺序** ## 实现方法 使用Go提供的源码解析工具把go文件解析成ast语法树,然后分析ast语法树内容。通过模板生成proto文件。 代码很简单关键代码不到300行,有兴趣可以花几分钟时间看一下。 ## 参考资料: https://www.jianshu.com/p/937d649039ec https://segmentfault.com/a/1190000020386857 感谢以上两篇博客的作者

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:701969077

4052 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传