day 14

90 阅读2分钟

gin框架,go编写的一个轻量级web框架

创建路由引擎、

r = gin.Default()

配置路由

r.GET("/",func (c *gin.Context){ c.JSON(200,gin.H{ "message": "Hello World", }) })

监听http端口

r.run() r.run(":8000")//改变端口

默认0.0.0.0:8080端口

编译并运行

go run .\main.go

下载一个fresh可以热启动

gin返回值

c.String(200,"abc");
c.JSON(200,map[string]interface{
        "success": true,
        "msg": "你好gin",
    }
)

//其中interface可以表示任意类型。

也可以使用gin框架提供的gin.H来替换map

也可以通过一个对象来返回其json。

a := &Article{
    Title: "abc",
    Content: "ab",
}
c.JSON(200,a)

另外还可以在请求时加入?callback=xxx后端使用JSONP将会返回一个回调函数返回此结果。

返回HTML页面, 首先在r中设置templates路径,r.LoadHTMLGlob("templates/*");

之后返回

c.HTML(http.StatusOK,"news.html",gin.H{
    "title":"abc"
})

html中通过{{.title}}来找寻元素

image.png

为了区分不同文件夹下的同名文件。

请求参数

//GET
uname := c.Query("username")
//POST
uname := c.PostForm("username")

也可以使用类来直接绑定

user = &UserInfo{}
c.ShouldBind(&user)

通过这样的方式可以将form表单直接绑定到一个实体类中。

动态路由

/user/20

image.png

路由分组

image.png

这样就可以合作开发并且有错能快速定位和修改。

Gin中间件

配置中间件可以配置回调函数,时间统计,登录认证,耗时权重

image.png

配置好静态资源目录,模板文件,模板函数。

//配置中间件
r.GET("/",initMiddleWare,func(c *gin.Context){
    c.String(200,"abc");
})

这种写法表示在执行回调函数之前,执行中间件函数。

如果之前之后都需要执行的话。

image.png

c.Next()可以触发下一个中间件,回调函数。完成后再继续执行下面的代码

同样的还有c.Abort()

如果有多个中间件,直接用逗号分开。

还可以配置全局中间件 r.Use(),同样中间用逗号分开。

分组路由中间件

image.png

中间件注意事项