gpt4 book ai didi

Golang Gin 使用新变量重定向和渲染模板

转载 作者:行者123 更新时间:2023-12-01 19:47:02 34 4
gpt4 key购买 nike

我试图在我的 Handler 上进行一些处理后传递一些变量功能。我该怎么办 redirect到一个新页面并将一些 json 变量传递给这个新模板?

// main package
func main() {
apiRoutes := gin.Default()
apiRoutes.POST("api/ipg/send", controllers.GatewayIpgSendHandler)
apiRoutes.GET("ipg/:token", controllers.GatewayIpgRequestHandler)

// ... rest of the codes
}


// controllers package
func GatewayIpgRequestHandler(context *gin.Context) {
// some processes that lead to these variables.
wage := 123
amount := 13123
redirectUrl := "www.test.com/callback"


// What should I do here to pass those
// three variables above to an existing `custom-view.tmpl` file
// in my `templates` folder.

}

Here is the php(laravel) equivalent我想做的事。

最佳答案

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

关于Golang Gin 使用新变量重定向和渲染模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61970551/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com