Hertz http框架 | 青训营笔记

131 阅读1分钟

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

Hertz官方文档

快速开始 | CloudWeGo

Hertz 基本使用

创建侦听服务器

h := server.Default(server.WithHostPorts("ip:port"))创建侦听port端口的服务器

创建路由

提供了get post delete put any等方法创建路由

h.GET()以此类推

路由分组

提供了路由分组的功能

h.Group("/v1"){
    h.GET("/login",loginEndpoint)
}

第二个参数loginEndpoint是一个函数

路由优先级

静态路由 > 命名路由(参数路由) > 通配路由

image.png

参数路由

image.png

使用RequestContext.Param()可以获得参数的信息

通配路由

image.png

参数绑定

提供了Bind Validate BindAndValidate三种方法用于参数的绑定和校验

Validate要配合go tag使用,在结构体的属性后面增加tag vd:""来定义检验标准

image.png

还有一些常用用法如下:

  • 自定义bind 和validate 的error
  • 自定义类型解析
  • 自定义验证函数

中间件

分为服务端中间件和客户端中间件

终止中间件调用链的执行c.Abort c.AbortWithMsg c.AbortWithStats

这是一个服务端中间件:

image.png

Hertz Client

client.NewClient()创建一个新的客户端,用来帮助用户发送http请求

示例如下:

image.png

Hertz 代码生成工具

基于Thrift IDL编写IDL,然后使用hz代码生成命令生成代码

image.png

详细hz命令可以参考文档中给出的注解 hz 命令行工具使用 | CloudWeGo

Hertz生态

常用扩展如下:

image.png