这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
gin的介绍
Gin 是一个用 Go (Golang) 编写的 web 框架。 它是一个类似于 martini 但拥有更好性能的 API 框架,由于 httprouter,速度提高了近 40 倍。 如果你是性能和高效的追求者,你会爱上 Gin。两款Web框架相比较,Gin自己说他比Martini要强很多。
gin的初始化
-
go get -u github.com/gin-gonic/gin//此代码可以远程git -
利用go.mod
由于go.mod提供了自动获取依赖的方法,所以可以直接
go mod init 文件名称加上go mod tidy来导入依赖
一个简单的例子
package main
import "github.com/gin-gonic/gin"
func main() {
//Default返回一个默认的路由引擎
r := gin.Default()
r.GET("/ping", func(c *gin.Context) { // /ping是路由
//输出json结果给调用方
c.JSON(200, gin.H{
"message": "pong",
})
})
r.Run(":8081") // 可以从本地的127.0.0.1:8081访问,不填的话,默认是8080端口
}
go run main.go 运行程序,打开浏览器访问http://127.0.0.1:8081/ping页面,最终显示:
{"message":"pong"} // 这就是返回给前端的数据
Gin框架中的路由使用
package main
import (
"github.com/gin-gonic/gin"
"fmt"
)
// gin的helloWorld
func main() {
// 1.创建路由
r := gin.Default()
// 路由组1 ,处理GET请求
v1 := r.Group("api/v1")
// {} 是书写规范
{
v1.GET("/register", register)
v1.GET("login", login)
}
v2 := r.Group("api/v2")
{
v2.POST("/register", register)
v2.POST("/login", login)
}
r.Run(":8000") // 开启端口在8000
}
func login(c *gin.Context) {
name := c.DefaultQuery("name", "jack")
c.String(http.StatusOK, fmt.Sprintf("hello %s\n", name))
}
func register(c *gin.Context) {
name := c.DefaultQuery("name", "lily")
c.String(http.StatusOK, fmt.Sprintf("hello %s\n", name))
}
hertz的使用
Hertz[həːts] 是一个 Golang 微服务 HTTP 框架,在设计之初参考了其他开源框架 fasthttp、gin、echo 的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。 如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择。
安装Hertz命令行工具
请确保您的Go版本在1.15及以上版本,笔者用的版本是1.18 配置好GO的环境后,按照Hertz的命名行工具
go install github.com/cloudwego/hertz/cmd/hz@latest
新建一个Hertz项目
- 进入到
$GOPATH下面,新建src文件夹,创建hertz_demo作为项目的根目录
cd $GOPATH
mkdir src
cd src
mkdir hertz_demo
cd hertz_demo
- 执行
hz new初始化项目,项目初始化后,hertz会自动创建对应项目文件