一、路径参数
func main() {
router := gin.Default()
// This handler will match /user/john but will not match /user/ or /user
router.GET("/user/:name", func(c *gin.Context) {
name := c.Param("name")
c.String(http.StatusOK, "Hello %s", name)
})
// However, this one will match /user/john/ and also /user/john/send
// If no other routers match /user/john, it will redirect to /user/john/
router.GET("/user/:name/*action", func(c *gin.Context) {
name := c.Param("name")
action := c.Param("action")
message := name + " is " + action
c.String(http.StatusOK, message)
})
// For each matched request Context will hold the route definition
router.POST("/user/:name/*action", func(c *gin.Context) {
b := c.FullPath() == "/user/:name/*action" // true
c.String(http.StatusOK, "%t", b)
})
// This handler will add a new router for /user/groups.
// Exact routes are resolved before param routes, regardless of the order they were defined.
// Routes starting with /user/groups are never interpreted as /user/:name/... routes
router.GET("/user/groups", func(c *gin.Context) {
c.String(http.StatusOK, "The available groups are [...]")
})
router.Run(":8080")
}
二、请求参数
(一)get请求参数
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
func main() {
router := gin.Default()
// 匹配url格式:/welcome?firstname=Jine&lastname=Doe
router.GET("/welcome", func(c *gin.Context) {
firstname := c.DefaultQuery("firstname", "Guest")
lastname := c.Query("lastname")
c.String(http.StatusOK, "Hello %s %s", firstname, lastname)
})
router.Run(":8000")
}
(二)post请求参数
package main
import (
"net/http"
"github.com/gin-gonic/gin"
)
/*
可以通过postman或者python发送post请求
import requests
rsp = requests.post("http://127.0.0.1:8000/form_post", data={
"message":"hello",
"name":"lily"
})
*/
func main() {
router := gin.Default()
router.POST("/form_post", func(c *gin.Context) {
message := c.PostForm("message")
name := c.DefaultPostForm("name", "ok") //可以设置默认值
c.JSON(http.StatusOK, gin.H{
"message": message,
"name": name,
})
})
router.Run(":8000")
}
(三)混合参数
package main
import (
"fmt"
"github.com/gin-gonic/gin"
)
/*
发送请求:
rsp = requests.post("http://127.0.0.1:8000/post?id=1&page=2", data={
"name":"hali",
"message":"hello"
})
*/
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)
})
router.Run(":8000")
}