Gin 入门(1)| 青训营笔记

108 阅读2分钟

Gin

Gin 是使用 Go/golang 语言实现的 HTTP Web 框架。接口简洁,性能极高。

Gin 的特征:

  • 快速:路由不使用反射,基于Radix树,内存占用少。
  • 中间件:HTTP请求,可先经过一系列中间件处理,例如:Logger,Authorization,GZIP等。这个特性和 NodeJs 的 Koa 框架很像。中间件机制也极大地提高了框架的可扩展性。
  • 异常处理:服务始终可用,不会宕机。Gin 可以捕获 panic,并恢复。而且有极为便利的机制处理HTTP请求过程中发生的错误。
  • JSON:Gin可以解析并验证请求的JSON。这个特性对Restful API的开发尤其有用。
  • 路由分组:例如将需要授权和不需要授权的API分组,不同版本的API分组。而且分组可嵌套,且性能不受影响。
  • 渲染内置:原生支持JSON,XML和HTML的渲染。

第一个Main函数

package main
​
import "github.com/gin-gonic/gin"func main() {
    r := gin.Default()
    r.GET("/", func(c *gin.Context) {
        c.String(200, "Hello, Geektutu")
    })
    r.Run() //r.Run(":9090") 
}

使用了gin.Default()生成了一个实例,这个实例即 WSGI 应用程序

r.Get("/", ...)声明了一个路由

r.Run()函数来让应用运行在本地服务器上,默认监听端口是 8080,也可以修改为合适的,譬如9090

路由

Restful风格的API,是一种互联网应用程序的API设计理念:URL定位资源,用HTTP描述操作

1.获取文章 /blog/getXxx GET blog/Xxx
2.添加 /blog/addXxx POST blog/Xxx
3.修改 /blog/updateXxx PUT blog/Xxx
4.删除 /blog/delXxxx DELETE blog/Xxx

可以通过Context的Param方法来获取API参数,可以通过DefaultQuery()或Query()方法获取,表单参数可以通过PostForm()方法获取

image-20230202224420219.png multipart/form-data格式用于文件上传,gin把原生的request封装到c.Request中

image-20230202224640829.png

image-20230202224619840.png

routes group

routes group是为了管理一些相同的URL

image-20230202224724053.png

相当于:localhost:8080/v2/login/

路由注册

image-20230202224909256.png 设计复杂的程序的时候,不能把路由注册放在main函数里面,需要单独放在一个在routers.go文件中定义并注册路由信息,便于管理;注意在一些场景下,函数首字母需要大写。

我们也可以在项目目录下单独定义一个app目录,用来存放我们不同业务线的代码文件,这样就很容易进行横向扩展

image-20230202225135433.png

gin 数据解析和绑定

三种方式:

  • Json 数据解析和绑定 \
  • 表单数据解析和绑定 \
  • URI数据解析和绑定

结构体成员加了第三个位置的标签,在转换指定类型时,key 会使用指定的名字。 image-20230202225225435.png

Json 数据解析和绑定:

image-20230202225225435.png

表单数据解析和绑定:

image-20230202225652652.png

URI数据解析和绑定:

image-20230202225727683.png

这是我参与「第五届青训营 」笔记创作活动的第6天.