Go Web轻量级框架Gin学习系列:安装与使用

https://juejin.im/post/5cb42cb86fb9a0687a17163d

虽然Go标准库net/http对使用Go开发Web应用提供非常强大的支持,然而对于想要快速开发并及上线项目的团队来说,使用Web框架不失为一种更好的选择。

Go社区中,有许多非常优秀的Web框架,如Gin,Iris,Echo,Martini,Revel以及国人开发的Beego框架。

Gin的优点

  • 快速:基于Radix树的路由,性能非常强大。
  • 支持中间件:内置许多中间件,如Logger,Gzip,Authorization等。
  • 崩溃恢复:可以捕捉panic引发的程序崩溃,使Web服务可以一直运行。
  • JSON验证:可以验证请求中JSON数据格式。
  • 路由分组:支持路由分组(RouteGroup),可以更方便组织路由。
  • 错误管理机制:可以收集程序中的错误
  • 多种数据渲染方式:支持HTMLJSONYAMLXML等数据格式的响应。
  • 扩展性:非常简单扩展中间件。
  • 数据验证器:支持数据验证器且可以自定义。

安装与使用

Gin目前最新的版本是V1.3.0,其安装过程非常简单,不过在安装Gin之前,需要安装Go1.6或以上的版本(后续版本可能要Go1.8或以上),下面介绍两种安装方式。

直接安装

  1. $ go get -u github.com/gin-gonic/gin //使用-u安装最新版本

使用Govendor安装

提示:Govendor是使用Go语言开发Go项目依赖管理工具。

  1. 安装Govendor

    $ go get github.com/kardianos/govendor

  2. 安装Gin

    $ govendor init
    $ govendor fetch github.com/gin-gonic/gin@v1.3

简单示例

通过上面的两种方式安装好Gin之后,下面通过一个简单示例看看怎么Gin使用开发Web应用。

  1. import "github.com/gin-gonic/gin"
  2. func main(){
  3. r := gin.Default()
  4. r.GET("/test",func(c *gin.Context){
  5. c.JSON(200,gin.H{"hello":"world"})
  6. })
  7. r.Run()
  8. }

可以看到,使用gin开发一个Web服务是很简单的一件事情,可以简单地分解为四步:

1. 导入gin包

在我们安装Gin框架的时候,已经将gin包安装到本地,如果使用go get命令安装的,则这个包路径为$GOPATH/src/github.com/gin-gonic/gin,而我们只需要使用import命令便可以将包导入。

  1. import "github.com/gin-gonic/gin"
2. 创建路由

使用gin.Default()方法会返回gin.Engine实例,表示默认路由引擎。

  1. r := gin.Default()

通过这种方式创建的gin.Engine,会默认使用Logger和Recovery两个中间件,可以用gin.New()方法创建一个不包含任何中间件的默认路由。

  1. r := gin.New()
3. 定义处理HTTP的方法

通过默认路由,我们可以创建处理HTTP请求的方法,示例中使用GET方法:

  1. r.GET("/test",func(c *gin.Context){
  2. c.JSON(200,gin.H{"hello":"world"})
  3. })

Gin支持所有通用的HTTP请求方法:GET,POST,PUT,PATCH,OPTIONS,HEAD,DELETE,其使用方式与上面例子相同,如POST:

  1. r.POST("/test",func(c *gin.Context){
  2. c.JSON(200,gin.H{"hello":"world"})
  3. })

每种方法都只处理对应的HTTP请求,使用Any方法则可以处理任何的HTTP请求。

  1. r.Any("/test",func(c *gin.Context){
  2. c.JSON(200,gin.H{"hello":"world"})
  3. })
4. 监听端口

定义好请求之后,使用Run()方法便可监听端口,开始接受HTTP请求,如果Run()方法没有传入参数的话,则默认监听的端口是8080。

  1. r.Run() //r.Run(":3000")

小结

Gin是一个Go Web开发的轻量级框架,使用也非常地简单,容易上手,但是,使用Gin开发前,还是需要对Go原生支持的net/http有所了解。

ft_authoradmin  ft_create_time2019-04-26 18:05
 ft_update_time2019-04-26 18:06