登录
首页 >  Golang >  Go问答

使用其他参数替代回调函数在 golang 的 gin-gonic/gin 框架中进行配置

来源:stackoverflow

时间:2024-02-17 22:51:24 447浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《使用其他参数替代回调函数在 golang 的 gin-gonic/gin 框架中进行配置》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

就我而言,我想使用另一个参数而不是回调

我的网址:http://example.com?id=1&cb=callback1

但是我在源代码中发现了这个:

// JSONP serializes the given struct as JSON into the response body.
// It adds padding to response body to request data from a server residing in a different domain than the client.
// It also sets the Content-Type as "application/javascript".
func (c *Context) JSONP(code int, obj interface{}) {
    callback := c.DefaultQuery("callback", "")
    if callback == "" {
        c.Render(code, render.JSON{Data: obj})
        return
    }
    c.Render(code, render.JsonpJSON{Callback: callback, Data: obj})
}

如何使用参数 cb 而不是回调


正确答案


您可以使用 gin 的中间件。在解析查询之前修改查询。

package main

import (
    "fmt"
    "github.com/gin-gonic/gin"
    "net/url"
)

func main() {
    r := gin.Default()
    r.Use(func(context *gin.Context) {
        req := context.Request
        urlCopy, _ := req.URL.Parse(req.RequestURI)
        if cb := urlCopy.Query().Get("cb"); cb != "" {
            req.URL.RawQuery += fmt.Sprintf("&callback=%s", url.QueryEscape(cb))
        }
    })

    r.GET("/ping", func(c *gin.Context) {
        c.JSONP(400, 1)
    })
    r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《使用其他参数替代回调函数在 golang 的 gin-gonic/gin 框架中进行配置》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>