gin框架的使用与了解 | 青训营

90 阅读2分钟

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

Go世界里最流行的Web框架,Github上有32K+star。 基于httprouter开发的Web框架。 中文文档齐全,简单易用的轻量级框架。

Gin的安装与使用

安装

命令行输入
go get -u github.com/gin-gonic/gin

使用,一个helloworld例子

import (
    "net/http"
 
    "github.com/gin-gonic/gin"
)
 
func main() {
    // 1.创建路由
   r := gin.Default()
   // 2.绑定路由规则,执行的函数
   // gin.Context,封装了request和response
   r.GET("/", func(c *gin.Context) {
      c.String(http.StatusOK, "hello World!")
   })
   // 3.监听端口,默认在8080
   // Run("里面不指定端口号默认为8080") 
   r.Run(":8000")
}

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

RESTful API

REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移”或“表现层状态转化”。

简单来说,REST的含义就是客户端与Web服务器之间进行交互的时候,使用HTTP协议中的4个请求方法代表不同的动作。

GET用来获取资源 POST用来新建资源 PUT用来更新资源 DELETE用来删除资源。

r.GET("/book", func(c *gin.Context){
    c.JSON(200, gin.H{
        "method":"GET"    
    })    
})
r.POST("/book",func(c *gin.Context){
    c.JSON(200, 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"    
    })    
})

只要API程序遵循了REST风格,那就可以称其为RESTful API。目前在前后端分离的架构中,前后端基本都是通过RESTful API来进行交互。

template

Go语言内置了文本模板引擎text/template和用于HTML文档的html/template。它们的作用机制可以简单归纳如下:

模板文件通常定义为.tmpl和.tpl为后缀(也可以使用其他的后缀),必须使用UTF8编码。 模板文件中使用{{和}}包裹和标识需要传入的数据。 传给模板这样的数据就可以通过点号(.)来访问,如果数据是复杂类型的数据,可以通过{ { .FieldName }}来访问它的字段。 除{{和}}包裹的内容外,其他内容均不做修改原样输出。

HTML渲染

gin框架中使用LoadHTMLGlob() 或者LoadHTMLFiles()方法进行HTML模板渲染


//r.LoadHTMLFiles("templates/posts/index.html", "templates/users/index.html")
	r.GET("/posts/index", func(c *gin.Context) {
		c.HTML(http.StatusOK, "posts/index.html", gin.H{
			"title": "posts/index",
		})
	})
 
	r.GET("users/index", func(c *gin.Context) {
		c.HTML(http.StatusOK, "users/index.html", gin.H{
			"title": "users/index",
		})
	})