登录
首页 >  Golang >  Go问答

使用gorilla mux的GO语言动态路由查询

来源:stackoverflow

时间:2024-03-08 10:03:25 322浏览 收藏

IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《使用gorilla mux的GO语言动态路由查询》,聊聊,我们一起来看看吧!

问题内容

我正在使用 gorilla mux 设置动态路由,这是 paths.go 代码

type route struct {
    name        string
    method      string
    pattern     string
    queries     []string
    handlerfunc http.handlerfunc
}

type routes []route

var vers = os.getenv("api_version")
var baseurl = "/api/" + vers + "/"

var authroutes = routes{
    route{
        "getallusers",
        "get",
        baseurl + "users",
        []string{"maxperpage", "{maxperpage}", "setpage", "{setpage}"},
        ssousercontroller.getallusers,
    },
}

我想使用这样的切片创建动态查询:

func handlers() *mux.router {

//.....
//some code
//.....

    s := r.pathprefix("/auth").subrouter()
    s.use(utils.jwtverify)
    for _, authroute := range authroutes {
        var handler http.handler
        var tamp = []string{}

        handler = authroute.handlerfunc
        handler = logger(handler, authroute.name)
        for _, q := range authroute.queries {

            var addquot = strconv.quote(q)
            tamp = append(tamp, addquot)

        }
        queries := strings.join(tamp, ", ") //this code create string "maxperpage", "{maxperpage:[0-99]+}", "setpage", "{setpage:[0-99]+}"

        // fmt.println(queries)
        s.
            methods(authroute.method).
            path(authroute.pattern).
            queries(queries). // produce error panic: runtime error: invalid memory address or nil pointer dereference
            name(authroute.name).
            handler(handler)

    }

    return r
}

上面的代码是router.go文件,它将路由routes.go文件中的所有路由,当我放置查询切片时,它会产生错误

panic: runtime error: invalid memory address or nil pointer dereference
[signal 0xc0000005 code=0x0 addr=0x20 pc=0x77a750]

请帮助使用 gorilla mux 进行动态 url 查询


解决方案


您使用的 Queries() 错误。它获取的是字符串对,而不是单个字符串。使用 Queries(authRoute.Queries...) 应该可以。

今天关于《使用gorilla mux的GO语言动态路由查询》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

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