Go框架三件套详解 | 青训营笔记

289 阅读2分钟

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

一、本堂课重点内容:

本堂课主要是讲述了Go框架三件套,在本次的学习中,我们了解了Gorm,Kitex,Hertz的基本用法与常见API,同时还有一个实战案例进行介绍。

二、Gorm:

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

连接数据库以mysql为例

import (

  "github.com/jinzhu/gorm"

  _ "github.com/jinzhu/gorm/dialects/mysql"

)

func main() {
  db, err := gorm.Open("mysql", "user:password@(localhost)/dbname?charset=utf8mb4&parseTime=True&loc=Local")
  defer db.Close()
}

增,删,改表结构,查

\\ 查询
db.first()
\\更新
db.Model().Update()
\\删除
db.Delete() 
\\插入
db.Create() 

三、Kitex:

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

使用kitex -module example -service example echo.thrift命令生成代码

ps: Kitex 目前对windows的支持不完善,如需使用该框架需要使用虚拟机或WSL2。

目前Kitex的服务注册与发现已经对接了主流了服务注册与发现中心,如ETCD,Nacos等。

四、Hertz:

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

路由

  • Hertz提供了GET、POST、PUT、DELETE、ANY等方法用于注册路由。
  • Hertz提供了路由组( Group)的能力,用于支持路由分组的功能
  • Hertz提供了参数路由和通配路由,路由的优先级为:静态路由>命名路由>通配路由

参数绑定

Hertz提供了Bind、Validate、BindAndValidate函数用于进行参数绑定和校验

Client

Hertz提供了HTTP Client用于帮助用户发送HTTP请求

五、课后个人总结:

通过今天的学习对Gorm,Kitex,Hertz三个框架有了初步的认识和了解。但是通过课上的简单学习还不足以吃透整个内容,对于一些基础用法还需要去看官方的文档。