天天看點

Gin學習之路—路由(二)1.接收表單資料2.搭配使用3.擷取map參數4.上傳檔案5.多個檔案上傳6.路由組

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
           
Gin學習之路—路由(二)1.接收表單資料2.搭配使用3.擷取map參數4.上傳檔案5.多個檔案上傳6.路由組

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")
}
           
Gin學習之路—路由(二)1.接收表單資料2.搭配使用3.擷取map參數4.上傳檔案5.多個檔案上傳6.路由組

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")
}
           
Gin學習之路—路由(二)1.接收表單資料2.搭配使用3.擷取map參數4.上傳檔案5.多個檔案上傳6.路由組

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"
           
Gin學習之路—路由(二)1.接收表單資料2.搭配使用3.擷取map參數4.上傳檔案5.多個檔案上傳6.路由組
Gin學習之路—路由(二)1.接收表單資料2.搭配使用3.擷取map參數4.上傳檔案5.多個檔案上傳6.路由組
Gin學習之路—路由(二)1.接收表單資料2.搭配使用3.擷取map參數4.上傳檔案5.多個檔案上傳6.路由組

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"
           
Gin學習之路—路由(二)1.接收表單資料2.搭配使用3.擷取map參數4.上傳檔案5.多個檔案上傳6.路由組
Gin學習之路—路由(二)1.接收表單資料2.搭配使用3.擷取map參數4.上傳檔案5.多個檔案上傳6.路由組
Gin學習之路—路由(二)1.接收表單資料2.搭配使用3.擷取map參數4.上傳檔案5.多個檔案上傳6.路由組

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
           
Gin學習之路—路由(二)1.接收表單資料2.搭配使用3.擷取map參數4.上傳檔案5.多個檔案上傳6.路由組