golang gin框架

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了golang gin框架相关的知识,希望对你有一定的参考价值。

gin:一个快速的http web framework,基于httprouter封装的,包含了日志处理、错误返回、验证处理、数据格式返回、文件上传、websocket支持、clientip支持、cookie支持。

服务入口:gin.go  engine.ServeHTTP(),这个会调用Next方法,第一个调用的就是日志middleware,Next中会调用具体的handlers,这个过程会递归调用Next,每次调用,循环只执行一次。

注册路由:routergroup.go  各种method方法,注册路由的时候会把handlers追加到middleware后,然后加入到树节点中。

Context是最重要的一个对象,在gin.New()时engine.pool.New allocateContext 初始化。

RouterGroup是组织路由的,一个RouterGroup关联一个handlers(slice),middleware和handler会放入handlers,然后调用Next遍历所有handler。日志handler会放入第一个,真正的handler会被放入到最后处理,这个主要为了日志middleware记录真实时间,在日志middleware调用Next遍历。

也就说:handler从日志middleware开始,到真正的handler处理结束。注册路由前,需要先注册middleware。日志Middleware:必须调用Next,不然记录的时间不对。通过middleware可以灵活的集成其他工具和功能,并把middleware抽象成HandlerFunc。gin的请求处理时间:从handler调用到返回数据的时间,并不包含路由查找时间,还有之前预处理(启动goroutine前)的时间,所以请求处理时间会远远低于请求端记录的请求响应时间。

bind是用于解析提交的数据(将数据绑定到struct结构),比如解析json,xml,query string等分为MustBindWith和ShouldBindWith,唯一的区别是前者会返回错误状态码,而后者需要自己返回状态码,后者更加灵活。输入认证数据后(header),请求才发送过去。Keys的数据主要在middleware中设置,方便在handler中使用。

golang

Golang Gin 框架入门介绍

目录

  • 前言
  • 正文
  • 结尾

前言

Gin 是使用纯 Golang 语言实现的 HTTP Web 框架,Gin 的接口设计简洁,性能极高,现在被广泛使用。我司的 Web 后端服务基本是都是基于 Gin 开发的。

正文

安装

首次使用 Gin 框架时,需要先进行安装,命令如下:

go get -u github.com/gin-gonic/gin

可能会出现如下报错信息:

# cd .; git clone -- https://github.com/gin-contrib/sse /Users/lz/go/src/github.com/gin-contrib/sse
Cloning into '/Users/lz/go/src/github.com/gin-contrib/sse'...
fatal: unable to access 'https://github.com/gin-contrib/sse/': LibreSSL SSL_connect: SSL_ERROR_SYSCALL in connection to github.com:443
package github.com/gin-contrib/sse: exit status 128

一般都是网络问题,可以多重试几次。

使用

在使用 Gin 的工具库之前,先要导入依赖库,具体代码如下:

import "github.com/gin-gonic/gin"

具体使用如下:

r := gin.Default()

实例演示

编写一段示例代码:

package main

import "github.com/gin-gonic/gin"

func main() 
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) 
		c.JSON(200, gin.H
			"message": "pong",
		)
	)
	r.Run()

通过代码可以知道,我们定义了 API 为 /ping 的服务接口。

然后我们编译代码,命令:

go build

编译成功后,会生成可执行程序 gin-demo,运行可执行程序,具体执行过程如下:

liuzhen-3:gin-demo lz$ ./gin-demo
[GIN-debug] [WARNING] Creating an Engine instance with the Logger and Recovery middleware already attached.

[GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production.
 - using env:	export GIN_MODE=release
 - using code:	gin.SetMode(gin.ReleaseMode)

[GIN-debug] GET    /ping                     --> main.main.func1 (3 handlers)
[GIN-debug] Environment variable PORT is undefined. Using port :8080 by default
[GIN-debug] Listening and serving HTTP on :8080

通过日志,我们可以看到,服务默认启动了 8080 端口。

接下来,我们测试一下这个服务是不是好用,在浏览器中输入如下地址:

http://localhost:8080/ping

运行结果如下图所示:

通过结果可以知道,服务是正常的。

结尾

综上所述,Gin 框架使用起来还是非常简单的,上手也非常方便。感兴趣的话,小伙伴们自己就动手试试吧!下面的内容我们继续深入分析 Gin 框架的源码部分,敬请期待!

作者简介:大家好,我是 liuzhen007(Data-Mining),是一位音视频技术爱好者,同时也是CSDN博客专家、华为云社区云享专家、签约作者,欢迎关注我分享更多干货!

 

以上是关于golang gin框架的主要内容,如果未能解决你的问题,请参考以下文章

Golang 框架 gin运行源码分析

Golang 的Gin框架入门教学

Golang Gin 框架入门介绍

golang-gin框架

Golang Gin 框架入门介绍

Golang Gin 框架之中间件