Hertz框架 - 1 | 青训营笔记

126 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第3天。这篇文章分享的是一些我初识Hertz框架的笔记记录。

Hertz概述

Hertz是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架的优势,其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。

Hertz环境配置以及测试示例代码

在windows下Hertz环境配置的环境配置比较简单,若有安装Vscode、Goland等IDE的直接拉取Github仓库文件即可(github.com/cloudwego/h… )。若使用Linux操作系统则需要自己配置GOPATH环境变量以及安装hz命令行

GOPATH环境变量配置:blog.csdn.net/qq_46416934…

hz命令行安装:www.cloudwego.io/zh/docs/her…

这里使用的是windows系统下的Goland IDE进行示例代码

package main

import (
    "context"

    "github.com/cloudwego/hertz/pkg/app"
    "github.com/cloudwego/hertz/pkg/app/server"
    "github.com/cloudwego/hertz/pkg/common/utils"
    "github.com/cloudwego/hertz/pkg/protocol/consts"
)

func main() {
    h := server.Default()

    h.GET("/ping", func(c context.Context, ctx *app.RequestContext) {
            ctx.JSON(consts.StatusOK, utils.H{"message": "pong"})
    })

    h.Spin()
}

在终端中ping本机回环地址的8888端口便可以收到信息如下:

image.png 这样便完成了Hertz Server的启动以及一次调用Server的过程。

Hertz路由

Hertz所提供的注册路由方法包括GET、POST、PUT、DELETE、ANY等,上个模块演示的ping操作就是一次GET过程,

h.GET("/ping", func(c context.Context, ctx *app.RequestContext) {
            ctx.JSON(consts.StatusOK, utils.H{"message": "pong"})

其函数内部传入了一个命令字符串,和一个匿名函数,其中包括对服务器状态的设置以及context的JSON写入。在后续对该服务器进行GET操作时便可以返回该服务器的状态以及写入的内容。

Hertz 支持丰富的路由类型用于实现复杂的功能,包括静态路由、参数路由、通配路由。

其中路由的优先级为:静态路由 > 命名路由 > 通配路由,上述示例所提到的是包括静态路由。