模板拓展
cwgo 工具也支持传递自己的模板,模版语法为 go template 的语法。cwgo 也欢迎用户贡献自己的模板。由于 RPC 和 HTTP 概念不同,其对应的模版变量也有一些差异,详细请参考下文
如需传递自定义模板,请给命令添加 -template
参数,如
RPC
-
模板文件通过 yaml 文件夹传递,通过 kitex 的
--template-dir
命令行参数指定,该文件夹下的所有 yaml 文件都会被渲染,模版解析失败会直接退出。请注意是否存在未知的隐藏文件。 -
文件夹内的
extensions.yaml
为特定文件,该文件的内容为扩展 Service 代码的配置文件。如果该文件存在的话,则不需要再传递template-extension
参数Yaml 文件定义如下:
-
模板使用的数据为 PackageInfo,认为这部分内包含所有的元数据,如 methodInfo 等,用户只需要传递模板文件即可,模板内的数据为 PackageInfo 数据。PackageInfo 内常用的内容见附录。
-
cwgo 支持根据 methodinfo 循环渲染文件。循环渲染时的 methodInfo list 内只有一个元素,为当前正在渲染的 method。
-
更新时,目前支持覆盖、跳过和根据 methods 增加文件三种,支持在一个文件当中 append。如果开启了循环渲染文件,则只支持 skip 和 cover。
最佳实践的 rpc 示例 tpl 可参考这里
HTTP
- 模版文件通过 yaml 文件夹传递,但是与 RPC 的 layout 不同的是 HTTP 的 layout 是基于 hertz 的自定义模版实现的,这里我们需要指定的 yaml 文件名需要固定为
layout.yaml
与package.yaml
,对于自定义模版的使用可以参考 Hz 自定义模版使用文档。
最佳实践的 http 示例 tpl 可参考这里
附录
Kitex PackageInfo 结构体含义
最后修改
September 29, 2023
: docs: update hz usage document (#787) (83b80c7)