如何使用大猩猩Mux实现不区分大小写的URL匹配

时间:2018-12-03 12:10:59

标签: go gorilla

我需要在大猩猩多路复用中以it is done here for built in mux的形式实现不区分大小写的URL匹配

我试图使用这样的中间件来实现相同的目的

rowIndex

但是如果更改了URL大小写,它仍然会抛出404,是否有任何方法可以使用gorilla-mux来实现它

1 个答案:

答案 0 :(得分:3)

不幸的是,截至撰写本文时,在gorilla/mux中的URL匹配之后,调用了中间件功能。

  

Mux支持将中间件添加到路由器,如果发现匹配项,则按照添加中间件的顺序执行,包括子路由器。

我建议您使用提供的链接中的示例。

例如

func CaselessMatcher(next http.Handler) http.Handler {
    return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
        r.URL.Path = strings.ToLower(r.URL.Path)
        next.ServeHTTP(w, r)
    })
}

然后,包装您的多路复用器。

r := mux.NewRouter()
//...
handler := CaselessMatcher(r)

这实际上不是坏的IMO。