go框架三件套 | 青训营笔记

182 阅读2分钟

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

本堂课重点内容

三件套Gorm、Kitex、Hertz介绍

Gorm、Kitex、Hertz的基本用法与常见API

详细知识点介绍

Gorm

Gorm的基本使用

image.png

Gorm根据不同的驱动支持不同的数据库

注意在做CRUD的时候传递的是指针,所以要用&

Gorm创建数据

image.png

DoNothing:true表示不处理冲突,在创建数据时则不会插入进数据库。

Gorm查询数据

image.png

用First和Find关键字查询数据的区别:

使用First,查询不到数据会返回ErrorRecordNotFound

使用Find查询多条数据,查询不到数据不会返回错误

Gorm删除数据

物理删除与软删除

物理删除:使用Delete关键字,会从数据库中删除数据,不能恢复

软删除:使用Gorm.DeleteAt关键字,不会真正从数据库中删除,可以使用Unscoped查询软删除数据

Gorm事务

事务保证数据一致性,在编写代码时,为防止程序员忘记写Commit、Rollback,Transction方法可以自动提交事务。

Kitex

Kitex生成代码

使用kitex -module example -service example echo.thrift命令生成代码,层级结构如图所示

image.png

Kitex Clint发送请求

创建Clint

image.png

发送请求

image.png

Kitex服务注册与发现

image.png

把server注册到注册中心,Clint去注册中心获取数据,实现负载均衡算法。

Kitex底层会定时更新Clint对象,所以处理速度不用担心。

Hertz

Hertz基本使用

image.png Hertz分为两个上下文,一个专注于传递源信息,一个专注于请求的处理

Hertz路由

路由优先级:静态路由 > 命名路由 > 通配路由

静态路由:路由项静态手动配置。

命名路由:有时候,通过一个名称来标识一个路由显得更方便一些,特别是在链接一个路由,或者是执行一些跳转的时候。可以在创建 Router 实例的时候,在 routes 配置中给某个路由设置名称。

通配路由:静态路由写在通配符路由之前,因为路由是从上至下解析的静态路由可能会被识别成通配符路由。

Hertz Clint

image.png

Hertz提供了http方法,帮助用户发送http请求,具体如图所示。

总结

本次课了解了go的三件套是什么,以及一些基本的用法和API接口,但了解深浅,需要一定的时间消化,慢慢深入。