快速启动一个web框架

package main

import "github.com/gin-gonic/gin"

func main() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
	r.Run(":8081") // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}
127.0.0.1:8081/ping
{
	"message": "pong"
}

带参数的请求

restful分割在路径上-restful的占位风格

package main
import "github.com/gin-gonic/gin"

func main() {
	r := gin.Default()
	r.GET("/ping/:name", func(c *gin.Context) {
		name := c.Param("name")

		c.JSON(200, gin.H{
			"message": "pong",
			"name":    name,
		})
	})
	r.Run(":8081") 
}
{
    "message": "pong",
    "name": "huajiejun"
}

Querystring parameters 常用的get请求

func main() {
	router := gin.Default()

	// Query string parameters are parsed using the existing underlying request object.
	// The request responds to a url matching:  /welcome?firstname=Jane&lastname=Doe
	router.GET("/welcome", func(c *gin.Context) {
		firstname := c.DefaultQuery("firstname", "Guest")
		lastname := c.Query("lastname") // shortcut for c.Request.URL.Query().Get("lastname")

		c.String(http.StatusOK, "Hello %s %s", firstname, lastname)
	})
	router.Run(":8080")
}
127.0.0.1:8080/welcome?firstname=hua&lastname=jiejun
Hello hua jiejun

Multipart/Urlencoded Form 表单提交post body

func main() {
	router := gin.Default()

	router.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,
		})
	})
	router.Run(":8080")
}

Untitled

混合模式

func main() {
	router := gin.Default()

	router.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", id, page, name, message)
		c.JSON(200, gin.H{
			"message": "message",
			"id":      id,
			"name":    name,
		})
	})
	router.Run(":8080")
}