这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
本堂课重点内容
三件套Gorm、Kitex、Hertz介绍
Gorm、Kitex、Hertz的基本用法与常见API
详细知识点介绍
Gorm
Gorm的基本使用
Gorm根据不同的驱动支持不同的数据库
注意在做CRUD的时候传递的是指针,所以要用&
Gorm创建数据
DoNothing:true表示不处理冲突,在创建数据时则不会插入进数据库。
Gorm查询数据
用First和Find关键字查询数据的区别:
使用First,查询不到数据会返回ErrorRecordNotFound
使用Find查询多条数据,查询不到数据不会返回错误
Gorm删除数据
物理删除与软删除
物理删除:使用Delete关键字,会从数据库中删除数据,不能恢复
软删除:使用Gorm.DeleteAt关键字,不会真正从数据库中删除,可以使用Unscoped查询软删除数据
Gorm事务
事务保证数据一致性,在编写代码时,为防止程序员忘记写Commit、Rollback,Transction方法可以自动提交事务。
Kitex
Kitex生成代码
使用kitex -module example -service example echo.thrift命令生成代码,层级结构如图所示
Kitex Clint发送请求
创建Clint
发送请求
Kitex服务注册与发现
把server注册到注册中心,Clint去注册中心获取数据,实现负载均衡算法。
Kitex底层会定时更新Clint对象,所以处理速度不用担心。
Hertz
Hertz基本使用
Hertz分为两个上下文,一个专注于传递源信息,一个专注于请求的处理
Hertz路由
路由优先级:静态路由 > 命名路由 > 通配路由
静态路由:路由项静态手动配置。
命名路由:有时候,通过一个名称来标识一个路由显得更方便一些,特别是在链接一个路由,或者是执行一些跳转的时候。可以在创建 Router 实例的时候,在 routes 配置中给某个路由设置名称。
通配路由:静态路由写在通配符路由之前,因为路由是从上至下解析的静态路由可能会被识别成通配符路由。
Hertz Clint
Hertz提供了http方法,帮助用户发送http请求,具体如图所示。
总结
本次课了解了go的三件套是什么,以及一些基本的用法和API接口,但了解深浅,需要一定的时间消化,慢慢深入。