HTTP 框架 Hertz 初体验
阿里云国内75折 回扣 微信号:monov8 |
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6 |
目录
版本预配置
- VMware 配置 CentOS 7 64位,参考 链接
- Golang 下载 go1.17.linux-amd64.tar.gz
PS : 不要下载 go 1.20 的新版本,因为有些东西暂不支持会报错1
安装 Golang
- 将 go 1.17 上传到 虚拟机的 /home/music 目录下
- 删除任何以前的 Go 安装(如果存在)然后将 go 1.17 解压缩到 /home/music 中
rm -rf /home/music/go && tar -C /home/music -xzf go1.17.linux-amd64.tar.gz
验证是否安装成功
go version
环境配置
- 将 /home/music/go/bin 添加到 PATH 环境变量中
进入 profile 文件
vim /etc/profile
在 profile 文件开头添加
export GOPATH=/home/music/go
export PATH=$GOPATH/bin:$PATH
重新加载系统配置文件
source /etc/profile
安装命令行工具 hz
- 安装 hz 工具 (hz 是 Hertz 框架提供的一个用于生成代码的命令行工具)
go install github.com/cloudwego/hertz/cmd/hz@latest
验证是否安装成功
hz -v
生成/编写示例代码
-
在 /home/music/go 目录外放置代码,例如 /home/music/project
-
在 /home/music/project 目录下创建 hertz_demo 文件夹
mkdir hertz_demo
- 在 hertz_demo 文件夹下 用 hz 生成代码
hz new -mod hertz_demo
PS : 不加 -mod hertz_demo 会报错2
- 整理 & 拉取依赖
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并完成了一次调用。
引用
附加资料
注脚
报错 # github.com/bytedance/sonic/internal/loader
…/…/go/pkg/mod/github.com/bytedance/sonic@v1.5.0/internal/loader/funcdata.go:27:22: undefined: _ModuleData
…/…/go/pkg/mod/github.com/bytedance/sonic@v1.5.0/internal/loader/funcdata.go:30:27: undefined: _ModuleData
…/…/go/pkg/mod/github.com/bytedance/sonic@v1.5.0/internal/loader/funcdata.go:41:6: undefined: _Func
…/…/go/pkg/mod/github.com/bytedance/sonic@v1.5.0/internal/loader/funcdata.go:42:12: undefined: _ModuleData
…/…/go/pkg/mod/github.com/bytedance/sonic@v1.5.0/internal/loader/funcdata.go:53:16: undefined: _ModuleData
…/…/go/pkg/mod/github.com/bytedance/sonic@v1.5.0/internal/loader/funcdata.go:79:26: undefined: _ModuleData
…/…/go/pkg/mod/github.com/bytedance/sonic@v1.5.0/internal/loader/funcdata_invalid.go:23:6: panic(“Unsupported Go version. Supported versions are: 1.15, 1.16, 1.17, 1.18, 1.19”) (no value) used as value
…/…/go/pkg/mod/github.com/bytedance/sonic@v1.5.0/internal/loader/loader.go:47:50: too many arguments in call to registerFunction
have (string, uintptr, uintptr, int, int, uintptr, uintptr, uintptr)
want (string, uintptr, int, int, uintptr) ↩︎报错 output directory /home/cjz/workplace/hertz_demo is not under GOPATH/src.
Please specify a module name with the ‘-module’ flag ↩︎