hz 接入第三方生成代码插件

hz 接入第三方生成代码插件。

目前,hz 的代码生成是基于 “thriftgo” 和 “protoc” 的插件模式生成的,这对于接入一些第三方的插件提供了很大的帮助,尤其是对于 “protoc” 来说,目前其支持的插件生态相当丰富。

因此,hz 提供了拓展第三方插件的方法。

ThriftGo 插件扩展

使用方法

hz new  --idl={YOUR-IDL.thrift} --thrift-plugins={PLUGIN-NAME}

如果插件需要传一些选项的话,如下:

hz new --idl={YOUR-IDL.thrift} --thrift-plugins={PLUGIN-NAME}:{YOUR-OPTION1,YOUR-OPTION2} --mod={YOUR_MODULE}

示例

目前,thriftgo 提供一个生成结构体参数验证函数的插件 “thrift-gen-validator”,可在生成 model 的时候一并生成结构体参数验证函数。

  • 安装:go install github.com/cloudwego/thrift-gen-validator@latest

  • 使用:hz new --idl=idl/hello.thrift --thrift-plugins=validator

  • 代码:code

Protoc 插件拓展

Protoc 插件相关的代码生成位置与 proto 文件的 go_package 有关,详情可 参考

使用方法

hz new  --idl={YOUR-IDL.proto} --protoc-plugins={PLUGIN-NAME}

如果插件需要传一些选项的话,如下:

hz new --idl={YOUR-IDL.proto} --protoc-plugins={PLUGIN_NAME}:{OPTION1,OPTION2}:{OUT_DIR} --mod={YOUR_MODULE}

示例

这里以使用 hz 时集成 protoc-gen-openapi 插件用来生成 openapi 3.0 文档为例。

  • 安装:go install github.com/google/gnostic/cmd/protoc-gen-openapi@latest

  • 定义 idl 的 go_package:“middleware/hertz/biz/model/psm”

  • 使用:hz new -I=idl --idl=idl/hello/hello.proto --protoc-plugins=openapi::./docs --mod=middleware/hertz

  • 代码:code