后端与Golang框架|青训营笔记

34 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第3天。

今天的课程内容为:

  • Gorm
    • gorm介绍
    • gorm踩坑总结
  • Kitex
    • Kitex介绍
  • Hertz
    • Hertz介绍
    • Mock测试

Gorm

Gorm介绍

Gorm是一个已经迭代了10年+的功能强大的ORM框架,在字节跳动内部被广泛使用,同时拥有着非常丰富的开源拓展。

# 安装gorm
go get -u gorm.io/gorm
go get -u gorm.io/driver/sqlite

Gorm官方支持的数据库类型包括:MySQL,PostgreSQL,SQlite,SQL Server。同时,gorm也支持通过自定义驱动来支持其他类型的数据库。

Gorm踩坑总结

  • 使用db.Fisrt()方法进行查询数据时,查询为空会返回ErrRecordNotFound,而使用db.Find()进行查询时,查询为空不会返回错误。

  • 使用结构体作为条件查询时,gorm会无视"零值",即golang语言中默认的0,"",false等等,这会导致此字段不会用于构建查询条件,如果想要使用零值作为查询条件,需要使用map类型作为查询条件。同理,在更新数据时,也不能通过结构体更新为"零值",需要通过map类型或Select()来更新。

  • gorm提供Transaction()方法用于自动提交事务,用户也可以使用Begin()方法开启事务(需要手动执行Rollback()和Commit()来结束事务)。

Kitex

Kitex介绍

Kitex是字节跳动内部的Golang微服务RPC框架,具有高性能、强可扩展的主要特点,支持多协议并且拥有丰富的开源拓展。

Kitex目前对Windows的支持不够完善。

# 安装kitex
go install github.com/cloudwego/kitex/tool/cmd/kitex@latest
# 安装thriftgo
go install github.com/cloudwego/thriftgo@latest
# 验证kitex是否安装成功
kitex --version
# 验证thriftgo是否安装成功
thriftgo --version

kitex支持通过IDL(interface description language)来自动生成代码。

Hertz

Hertz介绍

Hertz是字节跳动内部的HTTP框架,参考了其他开源框架的优势,具有高易用、高性能、高拓展性的特点。

# 安装Hertz
go install github.com/cloudwego/hertz/cmd/hz@latest

架构

Hertz基本使用

  • Hertz提供GET、POST、PUT、DELETE、ANY等方法用于注册路由。除此之外Hertz提供了路由组Group的能力,用于支持路由分组功能。Hertz也提供参数路由和通配路由,其中路由的优先级为:静态路由 > 命名路由 > 通配路由。
  • Hertz提供Bind、Validate、BindAndValidate等函数用于参数绑定与校验。
  • Hertz支持Use()方法来注册中间件。
  • Hertz支持通过Hz工具和IDL来自动生成基础服务代码。

相关文章

Gorm官方文档

Kitex官方文档

Herzt官方文档