Layout
cwgo 工具目前支持生成 MVC Layout,未来还会拓展更多的模板供用户使用。
代码结构
使用 cwgo 工具生成 server 代码时会自动生成 MVC layout。完成快速开始里面的步骤指引,会在本地生成一个 demo,其 HTTP 项目目录如下:
├── biz // 业务逻辑目录
│ ├── dal // 数据访问层
│ │ ├── init.go
│ │ ├── mysql
│ │ │ └── init.go
│ │ └── redis
│ │ └── init.go
│ ├── handler // view 层
│ │ └── hello
│ │ └── example
│ │ ├── hello_service.go // handler 文件,用户在该文件里实现 IDL service 定义的方法,update 时会查找当前文件已有的 handler 后,在尾部追加新的 handler
│ │ └── hello_service_test.go // 单测文件
│ ├── router // idl 中定义的路由相关生成代码
│ │ ├── hello
│ │ │ └── example // hello/example 对应 thrift idl 中定义的namespace;而对于 protobuf idl,则是对应 go_package 的最后一级
│ │ │ ├── hello.go // cwgo 为 hello.thrift 中定义的路由生成的路由注册代码;每次 update 相关 idl 会重新生成该文件
│ │ │ └── middleware.go // 默认中间件函数,hz 为每一个生成的路由组都默认加了一个中间件;update 时会查找当前文件已有的 middleware 在尾部追加新的 middleware
│ │ └── register.go // 调用注册每一个 idl 文件中的路由定义;当有新的 idl 加入,在更新的时候会自动插入其路由注册的调用;勿动
│ ├── service // service 层,业务逻辑存放的地方。更新时,新的方法会追加文件。
│ │ ├── hello_method.go // 具体的业务逻辑
│ │ └── hello_method_test.go
│ └── utils // 工具目录
│ └── resp.go
├── build.sh // 编译脚本
├── conf // 存放不同环境下的配置文件
│ └── ...
├── docker-compose.yaml
├── go.mod // go.mod 文件,如不在命令行指定,则默认使用相对于 GOPATH 的相对路径作为 module 名
├── hertz_gen // IDL 内容相关的生成代码
│ └── ...
├── idl
│ └── hello.thrift
├── main.go // 程序入口
├── readme.md
└── script // 启动脚本
└── bootstrap.sh
RPC 项目目录如下:
├── biz // 业务逻辑目录
│ ├── dal // 数据访问层
│ │ ├── init.go
│ │ ├── mysql
│ │ │ └── init.go
│ │ └── redis
│ │ └── init.go
│ └── service // service 层,业务逻辑存放的地方。更新时,新的方法会追加文件。
│ ├── HelloMethod.go
│ └── HelloMethod_test.go
├── build.sh
├── conf // 存放不同环境下的配置文件
│ └── ...
├── docker-compose.yaml
├── go.mod // go.mod 文件,如不在命令行指定,则默认使用相对于 GOPATH 的相对路径作为 module 名
├── handler.go // 业务逻辑入口,更新时会全量覆盖
├── idl
│ └── hello.thrift
├── kitex.yaml
├── kitex_gen // IDL 内容相关的生成代码,勿动
│ └── ...
├── main.go // 程序入口
├── readme.md
└── script // 启动脚本
└── bootstrap.sh
最后修改
July 29, 2024
: docs(hertz): unified `app.HandlerFunc` style (#1112) (451f476)