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",
})
})