这是我参与「第五届青训营 」笔记创作活动的第4天
Hertz 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp、gin、echo 的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。
目前,Hertz 支持 Linux、macOS、Windows 系统
一、准备工作
准备 Golang 开发环境
如果之前未搭建 Golang 开发环境,可以参考下 Golang 安装。
在完成环境准备后,本文将帮助你快速上手 Hertz。
首先,我们需要安装使用本示例所需要的命令行工具 hz:
- 确保
GOPATH环境变量已经被正确地定义(例如export GOPATH=~/go)并且将$GOPATH/bin添加到PATH环境变量之中(例如export PATH=$GOPATH/bin:$PATH);请勿将GOPATH设置为当前用户没有读写权限的目录 - 安装 hz:
go install github.com/cloudwego/hertz/cmd/hz@latest
更多 hz 使用方法可参考: hz
二、运行示例代码
确定代码放置位置
若代码放置于$GOPATH/src下,需在$GOPATH/src下创建额外目录,进入该目录后再获取代码:
$ mkdir -p $(go env GOPATH)/src/github.com/cloudwego
$ cd $(go env GOPATH)/src/github.com/cloudwego
若将代码放置于 GOPATH 之外,可直接获取
生成示例代码
- 在当前目录下创建 hertz_demo 文件夹,进入该目录中
- 生成代码
hz new - 整理 & 拉取依赖
$ go mod tidy
如果当前使用的是 Windows 环境,可以编写如下的示例代码:
- 在当前目录下创建 hertz_demo 文件夹,进入该目录中
- 创建
main.go文件 - 在
main.go文件中添加以下代码
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()
}
- 生成
go.mod文件
$ go mod init hertz_demo
- 整理并拉取依赖
$ go mod tidy
运行示例代码
完成以上操作后,我们可以直接编译并启动 Server
$ go build -o hertz_demo && ./hertz_demo
如果成功启动,你将看到以下信息
2022/05/17 21:47:09.626332 engine.go:567: [Debug] HERTZ: Method=GET absolutePath=/ping --> handlerName=main.main.func1 (num=2 handlers)
2022/05/17 21:47:09.629874 transport.go:84: [Info] HERTZ: HTTP server listening on address=[::]:8888
接下来,我们可以对接口进行测试
$ curl http://127.0.0.1:8888/ping
如果没问题的话,我们可以看到类似如下输出
$ {"message":"pong"}
到现在,我们已经成功启动了 Hertz Server,并完成了一次调用。更多 API 示例请参考 API 示例