GoWeb开发有很多框架,如Beego、Gin、Revel、Echo、IRis等,学习框架可以快速做开发,对比常见goweb框架,通过其github的活跃度,维护的team,生产环境中的使用率以及师兄的推荐,个人选择了学习Gin这个轻巧框架。

1. Gin框架简介

Gin是一个golang的微框架,基于 httprouter,封装比较优雅,API友好,源码注释比较明确。具有快速灵活,容错率高,高性能等特点。框架更像是一些常用函数或者工具的集合。借助框架开发,不仅可以省去很多常用的封装带来的时间,也有助于团队的编码风格和形成规范。

Gin 包括以下几个主要的部分:

  • 设计精巧的路由/中间件系统;
  • 简单好用的核心上下文 Context;
  • 附赠工具集(JSON/XML 响应, 数据绑定与校验等)。

Gin 是一个 Golang 写的 web 框架,,它提供了类似martini但更好性能(路由性能约快40倍)的API服务。

官方地址:https://github.com/gin-gonic/gin

go语言 是什么框架 go语言的框架_HTTP

2. 安装Gin

打开终端,输入以下命令:

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

此过程可能巨慢,可使用代理,解决办法如下:

go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct

安装完成后可以看到gopath的pkg目录下多了一些包:

go语言 是什么框架 go语言的框架_github_02


此时github.com里面的包还是用不了的,解决办法如下:

go mod init gin
  go mod edit -require github.com/gin-gonic/gin@latest

使用时要导入包:

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

3. Gin框架的简单应用

3.1 程序代码

创建一个项目ginhello,新建一个go文件(ginhello.go):

package main

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

func main() {
    router := gin.Default()
    router.GET("/", func(c *gin.Context) {
        c.String(http.StatusOK, "My first gin program.")
    })
    router.Run(":8000") 
}

1、router:=gin.Default():这是默认的服务器。使用gin的Default方法创建一个路由Handler;
2、然后通过Http方法绑定路由规则和路由函数。不同于net/http库的路由函数,gin进行了封装,把request和response都封装到了gin.Context的上下文环境中;
3、最后启动路由的Run方法监听端口。也可以用http.ListenAndServe(":8080", router),或者自定义Http服务器配置。

下面看下Run方法的实现:

func (engine *Engine) Run(addr ...string) (err error) {
    defer func() { debugPrintError(err) }()

    address := resolveAddress(addr)
    debugPrint("Listening and serving HTTP on %s\n", address)
    err = http.ListenAndServe(address, engine)
    return
}

使用gin框架简单几行代码,就能实现一个web服务。使用gin的Default方法创建一个路由handler。然后通过HTTP方法绑定路由规则和路由函数。不同于net/http库的路由函数,gin进行了封装,把request和response都封装到gin.Context的上下文环境。最后是启动路由的Run方法监听端口。除了GET方法,gin也支持POST,PUT,DELETE,OPTION等常用的restful方法。

3.2 运行结果

执行以下命令:

go run gin_hello.go

运行结果如下:

go语言 是什么框架 go语言的框架_封装_03


打开浏览器也可以看结果:

go语言 是什么框架 go语言的框架_HTTP_04