这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
hertz的简介
Hertz[həːts] 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp、gin、echo 的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。 如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择。
它的框架特点[:](概览 | CloudWeGo)
hertz的使用
安装
首先安装
go install github.com/cloudwego/hertz/cmd/hz@latest
查看是否安装成功
hz -v
建议使用Hertz自带的命令行工具 hz 来辅助开发。
提到hz
,它是由Hertz框架提供的用于生成代码的工具。目前,hz可以基于thrift和protobuf IDL为Hertz项目生成脚手架。
由hz生成的代码,一部分由底层编译器生成(通常是关于IDL中定义的结构体),另一部分是用户自定义的路由、方法和其他IDL信息。用户可以直接运行代码。
在执行流方面,当hz使用thrift IDL生成代码时,hz调用thrift- go来生成go结构体代码,并将自己作为插件执行到thrift -gen-hertz (命名为thrift-gen-hertz)以生成其余代码。在使用protobuf IDL时也是如此。
- 生成/编写示例代码
- 在当前目录下创建 hertz_demo 文件夹,进入该目录中
- 创建 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"
)
funcmain() {
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运行该代码go build -o hertz_demogo run hertz_demo
测试结果
curl http://127.0.0.1:8888/ping
StatusCode : 200
StatusDescription : OK
Content : {"message":"pong"}
RawContent : HTTP/1.1 200 OK
Content-Length: 18
Content-Type: application/json; charset=utf-8
Date: Mon, 30 Jan 2023 03:26:53 GMT
Server: hertz
{"message":"pong"}
Forms : {}
Headers : {[Content-Length, 18], [Content-Type, application/json; charset=utf-8], [Date, Mon, 30 Jan 2023 03:26:53 GMT], [Server,
hertz]}
Images : {}
InputFields : {}
Links : {}
ParsedHtml : mshtml.HTMLDocumentClass
RawContentLength : 18
本文主要介绍了 Golang 微服务 HTTP 框架 Hertz,只是简单的入门练习,如果想了解更多内容还是需要仔细研究官方文档,官方文档的内容很清晰全面,后续还需要深入学习。