gin框架与hertz框架的使用 | 青训营笔记

1,546 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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 框架,在设计之初参考了其他开源框架 fasthttpginecho 的优势, 并结合字节跳动内部的需求,使其具有高易用性、高性能、高扩展性等特点,目前在字节跳动内部已广泛使用。 如今越来越多的微服务选择使用 Golang,如果对微服务性能有要求,又希望框架能够充分满足内部的可定制化需求,Hertz 会是一个不错的选择。

安装Hertz命令行工具

请确保您的Go版本在1.15及以上版本,笔者用的版本是1.18 配置好GO的环境后,按照Hertz的命名行工具 go install github.com/cloudwego/hertz/cmd/hz@latest

新建一个Hertz项目

  1. 进入到$GOPATH下面,新建src文件夹,创建hertz_demo作为项目的根目录
cd $GOPATH
mkdir src
cd src
mkdir hertz_demo
cd hertz_demo
  1. 执行hz new初始化项目,项目初始化后,hertz会自动创建对应项目文件

综上,完毕