Go常用的Web框架,又简单快速的Gin、以及开发高效的模块化Beego。具体使用哪个要根据自己业务来确定,这里先介绍一下Gin,
Gin是Go语言最流行的轻量级Web框架之一,因为它是一个给予Httpounter包的Web框架。
1. 安装
1.1 Gin框架
go get -u github.com/gin-gonic/gin
1.2 Gin处理Session
go get -u github.com/gin-contrib/sessions
导入这个包以后,就可以在Go代码里面使用
github.com/gin-contrib/sessions/cookie
github.com/gin-contrib/sessions/redis
写到这里基本就可以Demo了,基本上Gin常用操作都在里面了。
package main
import (
"fmt"
"log"
"net/http"
"time"
"github.com/gin-contrib/sessions" // 导入session存储引擎
"github.com/gin-contrib/sessions/cookie"
"github.com/gin-gonic/gin" // 导入gin框架包
)
func main() {
r := gin.Default()
// 创建基于cookie的存储引擎,password123456参数是用于加密的密钥
store := cookie.NewStore([]byte("password123456"))
// 设置session中间件,参数mysession,指的是session的名字,也是cookie的名字
r.Use(sessions.Sessions("mysession", store)) // store是前面创建的存储引擎,我们可以替换成其他存储引擎
r.GET("/hello", func(c *gin.Context) {
// 初始化session对象
session := sessions.Default(c)
// 通过session.Get读取session值
// session是键值对格式数据,因此需要通过key查询数据
if session.Get("hello") != "world" {
session.Set("hello", "world") // 设置session数据
session.Delete("shirdon") // 删除session数据
session.Save() // 保存session数据
// session.Clear() // 删除整个session
}
session.Set("time_now", time.Now().Format("2021-01-01 15:04:55"))
c.JSON(200, gin.H{"hello": session.Get("hello"), "time_now": session.Get("time_now")})
})
r.POST("/post", func(c *gin.Context) {
file, _ := c.FormFile("file") // file是表单字段名字
log.Println(file.Filename) // 打印上传的文件名
c.SaveUploadedFile(file, "./data/shirdon.jpg") // 将上传的文件,保存到./data/shirdon.jpg 文件中
c.String(http.StatusOK, fmt.Sprintf("\'%s\' uploaded!", file.Filename))
})
r.Run(":8000")
}
func Handler(c *gin.Context) {
data, err := c.Cookie("my_cookie") // 根据cookie名字读取cookie值
if err != nil {
c.String(200, data) // 直接返回cookie值
return
}
c.String(200, "not found!")
}
请发表评论