Gin框架介绍及使用
Gin是一个用Go语言编写的web框架。
它是一个类似于martini但拥有更好性能的API框架, 由于使用了httprouter,速度提高了近40倍。
如果你是性能和高效的追求者, 你会爱上Gin。
Go世界里最流行的Web框架,Github上有32K+star。 基于httprouter开发的Web框架。 中文文档齐全,简单易用的轻量级框架。
安装
go get -u github.com/gin-gonic/gin
- 如果是goland的话,直接导入,然后点自动导入就行。
- 来看下实例吧 !
gin简单实例
package main
import (
"github.com/gin-gonic/gin"
"net/http"
)
func sayHello(c *gin.Context){
c.JSON(200,gin.H{
"message":"hello golang!",
})
}
func main() {
// 创建一个默认的引擎
r := gin.Default()
// 指定用户使用get请求访问/hello时,执行sayheelo这个函数
r.GET("/hello",sayHello)
// 启动服务
r.Run(":9090")
}
- 这样就可以做到一个浏览器和服务器的交互拉
- 但是这还存在另一个问题,我们知道,http请求他有很多类型
- 例如 GET、POST、PUT、DELETE等等。但是浏览器只能对GET进行查看,如果没有特殊处理的话。
- 所以这里我们要借助一下Postman工具,就可以对其他类型的请求进行查看。例如我们在代码里面添加几个其他的请求。
r.POST("/book", func(c *gin.Context) {
c.JSON(http.StatusOK,gin.H{
"method":"POST",
})
})
r.PUT("/book", func(c *gin.Context) {
c.JSON(200,gin.H{
"method":"PUT",
})
})
r.DELETE("/book", func(c *gin.Context) {
c.JSON(200,gin.H{
"method":"DELETE",
})
})
- 通过工具我们可以看到,里面有针对各种各样请求的一个检测,下方也会对不同的请求给出响应。
- 这样我们就可以对gin框架进行一系列的完善的检测了。
然后我们套入HTML文件来试试了,那么开始gin学习之前呢,我们应该先把Template给学会哈,这样学起来会更加方便一点。
Go_Template详解文章链接
- 学完这个后,我们就可模板进行一个动态数据的绑定了!
- 但是我们这学习的时候,用的是go自带的net/http包来实现web的访问,接下来,我们就要学习,gin框架如何对对模板进行渲染。
gin框架模板渲染
- 七米老师常说哈,遇事不决,写注释
- 模板渲染,永远的三步满:
模板定义
、模板解析
、模板渲染
- 模板的定义
就是搞个 tmpl文件,内容和html一样
- 模板的解析
// 模板的解析
r.LoadHTMLFiles("gin_HTML/templates/index.tmpl")
- 模板的渲染
// 模板的渲染
r.GET("/index", func(c *gin.Context) {
// http请求状态码
// gin.H 在本质上就是一个map,用于存放一次性导入模板的数据
c.HTML(http.StatusOK,"index.tmpl",gin.H{
"title":"www.baidu.com",
})
})
// 让服务器跑起来,启动server
r.Run(":9090")
- 前面也说过,使用gin框架的话要使用r.run进行开启服务。
- 开启后进行访问,完美哈!!!
当出现多个模板的时候,我们该如何进行模板的渲染呢,
多个模板渲染
- 首先给模板设置一个名称 固定的名称
{{define "index.html"}}
html内容
{{end}}
然后在 解析模板 的时候要就有两种方式了
r.LoadHTMLGlob("templates/**/*") // 第一种
r.LoadHTMLFiles("templates/posts/index.html", "templates/users/index.html") //第二种
- 两种都可以,推荐使用第一种,啊哈哈哈哈哈
样式 | 含义 |
---|---|
** | 所有目录文件 |
* | 所有的模板文件 |
- 渲染都是一样的操作哈,简单吧!!!
gin框架如何自定义函数
- 在前面的文章里面也有说过自定义函数哈,但是我们的gin框架更加的方便简洁呢。
- 同样的我们做一个 safe 函数,对内容进行转义,
- 我们都知道 html/tamplate包下面是安全的满,所有的内容都会被文本化,用于防止html注入。
- 但是有的时候我们需要将内容进行转义,所以我们就需要进行自定义函数的设置了
- 可以看到哈,这是没有进行转义后的内容,然后我们自己做一个自定义的函数, safe
- 这就是自定义函数拉,是不是超级方便,直接setfuncmap即可。
- 文本内容也成功的被转义过来了
静态文件的引入
- 这个就是引入一些静态的资源,比如 js文件 , css文件等等。
- 我们只需要按照以下方式在渲染页面前调用gin.Static方法即可。
func main() {
r := gin.Default()
// 指定两个地方,一个是用来引用的名称 , 一个是静态资源存放的位置。
r.Static("/static", "./static")
r.LoadHTMLGlob("templates/**/*")
// ...
r.Run(":8080")
}
- 然后再html页面进行引用
- 非常的生动形象哈!
好了好了,今天就到这里吧!!