Gin框架系列之请求参数传递

一、路径参数

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

 

上一篇:Vue 路由的基本概念与使用


下一篇:vue中刷新页面或跳转前一页面