您可以使用 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())
}