您可以使用 cookie 或查询参数来传递变量。使用 中提供的解决方案之一GatewayIpgRequestHandler。


main.go


package main


import (

    "github.com/gin-gonic/gin"

    "temp/controllers"

)


func main() {

    apiRoutes := gin.Default()

    apiRoutes.GET("ipg/:token", controllers.GatewayIpgRequestHandler)

    apiRoutes.GET("api/callback/cookies", controllers.APICallBackWithCookies)

    apiRoutes.GET("api/callback/query_params", controllers.APICallBackWithQueryParams)

    apiRoutes.Run()

}

控制器.go


package controllers


import (

    "github.com/gin-gonic/gin"

    "net/http"

    "net/url"

)


func APICallBackWithCookies(c *gin.Context) {

    wage, err := c.Cookie("wage")

    if err != nil {

        return

    }

    amount, err := c.Cookie("amount")

    if err != nil {

        return

    }

    c.JSON(http.StatusOK, gin.H{"wage": wage, "amount": amount})

}

func APICallBackWithQueryParams(c *gin.Context) {

    wage := c.Query("wage")

    amount := c.Query("amount")

    c.JSON(http.StatusOK, gin.H{"wage": wage, "amount": amount})

}


func GatewayIpgRequestHandler(c *gin.Context) {

    // first solution

    c.SetCookie("wage", "123", 10, "/", c.Request.URL.Hostname(), false, true)

    c.SetCookie("amount", "13123", 10, "/", c.Request.URL.Hostname(), false, true)

    location := url.URL{Path: "/api/callback/cookies",}

    c.Redirect(http.StatusFound, location.RequestURI())


    // second solution

    q := url.Values{}

    q.Set("wage", "123")

    q.Set("amount", "13123")

    location := url.URL{Path: "/api/callback/query_params", RawQuery: q.Encode()}

    c.Redirect(http.StatusFound, location.RequestURI())

}