首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将上下文传递给子目录

将上下文传递给子目录
EN

Stack Overflow用户
提问于 2015-05-27 16:18:10
回答 1查看 54关注 0票数 0

我有一个用于应用程序上下文的Context结构。ConfigureRouter函数接收上下文作为参数,并设置全局变量c,以便同一文件中的中间件可以使用它。

代码语言:javascript
复制
var c *core.Context

func ConfigureRouter(ctx *core.Context, router *httprouter.Router) {
    c = ctx //make context available in all middleware
    router.POST("/v1/tokens/create", token.Create) //using httprouter
}

上面列出的一条路由调用token.Create (来自作为子目录的令牌包),但它也需要上下文。

代码语言:javascript
复制
//token/token.go
func Create(w http.ResponseWriter, r *http.Request, params httprouter.Params) {
    //Help! I need the context to do things
}

如何将上下文传递给令牌包?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-27 16:28:54

可以将Create函数重新定义为返回处理程序函数的函数:

代码语言:javascript
复制
func Create(ctx *core.Context) httprouter.Handle {
    return func(w http.ResponseWriter, r *http.Request, params httprouter.Params) {
        // Now you have the context to do things
    }
}

其中,httprouter.Handle是httprouter定义为type Handle func(http.ResponseWriter, *http.Request, Params)的func类型。

然后在ConfigureRouter中像这样使用它

代码语言:javascript
复制
func ConfigureRouter(ctx *core.Context, router *httprouter.Router) {
    router.POST("/v1/tokens/create", token.Create(ctx))
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30487979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档