iris 怎样直接获取context

不用接口,不用结构体,在单纯的方法中,怎样获取iris.Context
正常是这么写的

func test(ctx iris.Context)  {
    ctx.URLParam("name")
}

但如果不给方法传参数应该怎么写?

试过下面的,报错。难道要把context作为全局变量去调用吗?

func test()  {
    var ctx iris.Context
    ctx.URLParam("name")
}
阅读 6.1k
2 个回答

ctx iris.Context 这个对象是在HTTP Server 接受到请求后构建的,之后解析你注册的路由找到路由对应的方法,并传入参数。
所有不存在单纯在方法中提取这个参数。

一般像这种不太建议你这么做,要么直接传参数进去,要么使用 context.Context 包携带值进去


type ctxKey byte

var irisCtxKey ctxKey

func TestContext(ctx context.Context) {
   
    if ictx,ok := ctx.Value(irisCtxKey).(*iris.Context) ; ok {
        
        val := ictx.URLParam("k")
    
    }


}


func main(){
    
    ctx := context.Background()
    ctx = context.WithValue("k1", 1)
    ctx = context.WithValue(irisCtxKey, irisCtx) //  从请求中来
    
    TestContext(ctx)
}



撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题