gin github:https://github.com/gin-gonic/gin
1.接收表单数据
package main
import (
"github.com/gin-gonic/gin"
)
func main() {
r:= gin.Default()
r.POST("/form_post", func(c *gin.Context) {
message := c.PostForm("message")
nick := c.DefaultPostForm("nick", "anonymous")
c.JSON(200, gin.H{
"status": "posted",
"message": message,
"nick": nick,
})
})
r.Run(":9090")
}
curl -X POST -d message=123 127.0.0.1:9090/form_post
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIyVGduV2YfNWawNyZuBnL1YDN4UzN1YTM0ETOwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
2.搭配使用
package main
import (
"fmt"
"github.com/gin-gonic/gin"
)
func main() {
r:= gin.Default()
r.POST("/post", func(c *gin.Context) {
id := c.Query("id")
page := c.DefaultQuery("page", "0")
name := c.PostForm("name")
message := c.PostForm("message")
fmt.Printf("id: %s; page: %s; name: %s; message: %s \n", id, page, name, message)
})
r.Run(":9090")
}
3.获取map参数
package main
import (
"fmt"
"github.com/gin-gonic/gin"
)
func main() {
r:= gin.Default()
r.POST("/post", func(c *gin.Context) {
ids := c.QueryMap("ids")
names := c.PostFormMap("names")
fmt.Printf("ids: %v; names: %v\n", ids, names)
})
r.Run(":9090")
}
4.上传文件
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"log"
"net/http"
)
func main() {
r:= gin.Default()
r.MaxMultipartMemory = 8 << 20 // 8 MiB
r.POST("/upload", func(c *gin.Context) {
// single file
file, err := c.FormFile("file")
if err != nil {
log.Println(err)
c.String(400,"is not")
return
}
log.Println(file.Filename)
dst := "/Users/qushuaibo/Desktop/gin-cmdb/" + file.Filename
err = c.SaveUploadedFile(file, dst)
if err != nil {
log.Println(err)
c.String(400,"save false ")
return
}
c.String(http.StatusOK, fmt.Sprintf("'%s' uploaded!", file.Filename))
})
r.Run(":9090")
}
curl -X POST http://127.0.0.1:9090/upload \
-F "[email protected]/Users/qushuaibo/Desktop/gin-cmdb/controller/login.go" \
-H "Content-Type: multipart/form-data"
5.多个文件上传
package main
import (
"fmt"
"github.com/gin-gonic/gin"
"log"
"net/http"
)
func main() {
r:= gin.Default()
r.MaxMultipartMemory = 8 << 20 // 8 MiB
r.POST("/upload", func(c *gin.Context) {
// Multipart form
form, _ := c.MultipartForm()
files := form.File["upload[]"]
for _, file := range files {
dst := "/Users/qushuaibo/Desktop/gin-cmdb/" + file.Filename
log.Println(file.Filename)
// Upload the file to specific dst.
err := c.SaveUploadedFile(file, dst)
if err != nil {
log.Println(err)
continue
}
}
c.String(http.StatusOK, fmt.Sprintf("%d files uploaded!", len(files)))
})
r.Run(":9090")
}
curl -X POST http://127.0.0.1:9090/upload \
-F "upload[][email protected]/Users/qushuaibo/Desktop/gin-cmdb/controller/login.go" \
-F "upload[][email protected]/Users/qushuaibo/Desktop/gin-cmdb/router/default.go" \
-H "Content-Type: multipart/form-data"
6.路由组
package main
import (
"github.com/gin-gonic/gin"
)
func GetV1(c *gin.Context) {
c.String(200,"v1 test")
}
func GetV2(c *gin.Context) {
c.String(200,"v2 test")
}
func main() {
r:= gin.Default()
v1 := r.Group("/v1")
{
v1.GET("/login",GetV1)
}
v2 := r.Group("/v2")
{
v2.GET("/login",GetV2)
}
r.Run(":9090")
}
curl 127.0.0.1:9090/v1/login
curl 127.0.0.1:9090/v2/login