protoc

protobuf是Google官方出品的一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。

使用protobuf,需要先书写.proto文件,然后编译该文件。编译proto文件则需要使用到官方的protoc工具,安装文档请参看:google官方protoc工具

注意:protoc是用于编辑proto文件的工具,它并不具备生成对应语言代码的能力,所以正常都是protoc配合对应语言的代码生成工具来使用,如Go语言的gogo protobuf,请先点击按文档说明安装。

安装好对应工具后,我们可以进入api目录,执行如下命令:

  1. export $KRATOS_HOME = kratos路径
  2. export $KRATOS_DEMO = 项目路径
  3. // 生成:api.pb.go
  4. protoc -I$GOPATH/src:$KRATOS_HOME/tool/protobuf/pkg/extensions:$KRATOS_DEMO/api --gogofast_out=plugins=grpc:$KRATOS_DEMO/api $KRATOS_DEMO/api/api.proto
  5. // 生成:api.bm.go
  6. protoc -I$GOPATH/src:$KRATOS_HOME/tool/protobuf/pkg/extensions:$KRATOS_DEMO/api --bm_out=$KRATOS_DEMO/api $KRATOS_DEMO/api/api.proto
  7. // 生成:api.swagger.json
  8. protoc -I$GOPATH/src:$KRATOS_HOME/tool/protobuf/pkg/extensions:$KRATOS_DEMO/api --bswagger_out=$KRATOS_DEMO/api $KRATOS_DEMO/api/api.proto

请注意替换/Users/felix/work/go/src目录为你本地开发环境对应GOPATH目录,其中--gogofast_out意味着告诉protoc工具需要使用gogo protobuf的工具生成代码。