1快速開始

快速開始 

package main

import (
	"github.com/gin-gonic/gin"
	"net/http"
)

func main() {
	//1.創建路由
	r := gin.Default()
	//2.指定路由規則,執行的函數
	r.GET("/ping", func(c *gin.Context) {
		c.String(http.StatusOK,"hello world")
	})
	//3.監聽端口,默認是8080
	r.Run(":8000")// listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

路由

API參數

	r.GET("/user/:name", func(c *gin.Context) {
		name := c.Param("name")
		c.String(http.StatusOK, "Hello %s", name)
	})

測試:http://localhost:8000/user/fsl

url參數

	r.GET("/welcome", func(c *gin.Context) {
		//DefaultQuery沒有值的時候取第二個參數
		firstname := c.DefaultQuery("firstname", "Guest")
		//根據key獲取值
		lastname := c.Query("lastname") // shortcut for c.Request.URL.Query().Get("lastname")

		c.String(http.StatusOK, "Hello %s %s", firstname, lastname)
	})

表單參數

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

x-www-form-urlencoded

單文件上傳

    // Set a lower memory limit for multipart forms (default is 32 MiB)
	// router.MaxMultipartMemory = 8 << 20  // 8 MiB
	r.POST("/upload", func(c *gin.Context) {
		// single file
		file, _ := c.FormFile("file")
		log.Println(file.Filename)

		// Upload the file to specific dst.
		// c.SaveUploadedFile(file, dst)

		c.String(http.StatusOK, fmt.Sprintf("'%s' uploaded!", file.Filename))
	})

多文件上傳

	r.POST("/upload", func(c *gin.Context) {
		// Multipart form
		form, _ := c.MultipartForm()
		files := form.File["files"]
		for _, file := range files {
			log.Println(file.Filename)
			// Upload the file to specific dst.
			if err:=c.SaveUploadedFile(file,file.Filename);err!=nil{
				c.String(http.StatusBadRequest,fmt.Sprintf("uplod err %s",err.Error()))
				return
			}
		}
		c.String(http.StatusOK, fmt.Sprintf("%d files uploaded!", len(files)))
	})

路由組

	// Simple group: v1
	v1 := r.Group("/v1")
	{
		v1.POST("/login", loginEndpoint)
		v1.POST("/submit", submitEndpoint)
		v1.POST("/read", readEndpoint)
	}

	// Simple group: v2
	v2 := r.Group("/v2")
	{
		v2.POST("/login", loginEndpoint)
		v2.POST("/submit", submitEndpoint)
		v2.POST("/read", readEndpoint)
	}
	//3.監聽端口,默認是8080
	r.Run(":8000") // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")

}
func loginEndpoint(c *gin.Context){
	fmt.Println("登錄")
	c.String(http.StatusOK,"登錄")
}
func submitEndpoint(c *gin.Context){
	c.String(http.StatusOK,"提交")
}
func readEndpoint(c *gin.Context){
	c.String(http.StatusOK,"讀取")
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章