这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
现在再来学基础框架有点临时抱佛脚的感觉了。由于直播课没看而且过期了,本篇文章主要记录学习过程中遇到的一些理解,保真不保对。
1. hertz工作过程
以官方示例中的简单示范为例,代码如下:
func main() {
h := server.Default()
h.GET("/ping", func(c context.Context, ctx *app.RequestContext) {
ctx.JSON(consts.StatusOK, utils.H{"message": "pong"})
})
h.Spin()
}
在main函数中,第一行和最后一行分别是注册一个服务和运行一个服务,这个不必多言,重点是对中间路由函数的理解。
我们看到GET函数中第二个参数为一个函数func,该函数第一个参数为一个context.Context,通过它我们可以方便地对同一个请求所产生地goroutine进行约束管理。第二个参数为*app.RequestContext,在我理解中它人如其名,用于处理请求的内容,并返回请求所需的内容。在GET函数中ctx.JSON,其作用就是返回一个json,第一个参数是状态码,第二个参数就是json具体的内容。
这样一个路由的基本功能就理解完毕了。
2. hz生成的目录结构
由于之前没有啥实践经历,hz生成的目录结构上来就有点懵。但是其并不复杂,在学习了示例代码中的hertz_gorm就大概了解结构的好处了。
首先是main.go里的main函数:
func main() {
dal.Init()
h := server.Default()
register(h)
h.Spin()
}
中间的register()是同目录main包文件夹里router_gen.go的函数,用于管理分布在不同地方的各种路由。 然后最重要的就是biz文件夹,官方文档里描述为business 层,存放业务逻辑相关流程。这里面内容会很杂,一般会有使用IDL生成结构体和对应的服务,又或是与数据库连接时的数据库模型和逻辑。