gin入门 | 青训营笔记

103 阅读2分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记

Gin是一个用Go语言编写的web框架。它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍。

gin框架中文文档

gin-gonic.com/zh-cn/docs/

安装

下载并安装Gin:

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

特性

1.快速

  • 基于 Radix 树的路由,小内存占用。没有反射。可预测的 API 性能。

2.支持中间件

  • 传入的 HTTP 请求可以由一系列中间件和最终操作来处理。 例如:Logger,Authorization,GZIP,最终操作 DB。

3.Crash 处理

Gin 可以 catch 一个发生在 HTTP 请求中的 panic 并 recover 它。这样,你的服务器将始终可用。例如,你可以向 Sentry 报告这个 panic!

4.JSON 验证

  • Gin 可以解析并验证请求的 JSON,例如检查所需值的存在。

5.路由组

  • 更好地组织路由。是否需要授权,不同的 API 版本…… 此外,这些组可以无限制地嵌套而不会降低性能。

6.错误管理

  • Gin 提供了一种方便的方法来收集 HTTP 请求期间发生的所有错误。最终,中间件可以将它们写入日志文件,数据库并通过网络发送。

7.内置渲染

  • Gin 为 JSON,XML 和 HTML 渲染提供了易于使用的 API。

8.可扩展性

一个简单的Gin示例

package main

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

func main() {
	// 创建一个默认的路由引擎
	r := gin.Default()
	// GET:请求方式;/hello:请求的路径
	// 当客户端以GET方法请求/hello路径时,会执行后面的匿名函数
	r.GET("/hello", func(c *gin.Context) {
		// c.JSON:返回JSON格式的数据
		c.JSON(200, gin.H{
			"message": "Hello world!",
		})
	})
	// 启动HTTP服务,默认在0.0.0.0:8080启动服务
	r.Run()
}

将上面的代码保存并编译执行,然后使用浏览器打开127.0.0.1:8080/hello就能看到一串JSON字符串。