1.Gin
Go 语言中,Gin 是一个流行的 Web 框架,它提供了一种简单、快速和高效的方式来构建 Web 应用。Gin 使用类似于 Martini 的 API,但是性能更好(归功于它基于 radix 树的路由),并且拥有更好的性能基准。
2.Gin使用
2.1 启动
package main
import (
"GoGin/routers"
"github.com/gin-gonic/gin"
)
func main() {
r := gin.Default()
r.LoadHTMLGlob("templates/*")
routers.LoadBlog(r)
routers.LoadShop(r)
routers.Test(r)
r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
2.2路由与处理请求
package routers
import (
"fmt"
"github.com/gin-gonic/gin"
"log"
"net/http"
)
//get请求,获取url参数
func doGet(c *gin.Context) {
aid := c.Query("aid")
fmt.Println(aid)
data := map[string]interface{}{"name": "lijun", "age": 18}
c.JSON(http.StatusOK, gin.H{
"data": data,
})
}
//post请求,获取表单数据
func doPost(c *gin.Context) {
username := c.PostForm("username")
password := c.PostForm("password")
c.JSON(http.StatusOK, gin.H{
"message": "test_post",
"username": username,
"password": password,
"code": 200,
})
}
// Test is a test function.
// Test test接口与处理映射
func Test(e *gin.Engine) {
e.GET("/index", index)
e.GET("/ping", doGet)
e.POST("/test_post", doPost)
e.POST("/uploads", uploads)
}
// index handles the index route.
//后端渲染
func index(c *gin.Context) {
c.HTML(http.StatusOK, "index.tmpl", gin.H{
"title": "hello",
})
}
// uploads handles the file uploads.
//上传多个文件
func uploads(c *gin.Context) {
// Multipart form
form, _ := c.MultipartForm()
files := form.File["upload[]"]
for _, file := range files {
log.Println(file.Filename)
dst := "./upload/" + file.Filename
// 上传文件至指定目录
err := c.SaveUploadedFile(file, dst)
if err != nil {
c.String(400, "failed!")
return
}
}
c.String(http.StatusOK, fmt.Sprintf("%d files uploaded!", len(files)))
}