我需要在大猩猩 mux 中實現不區分大小寫的 URL 匹配,因為它是在此處為內置 mux 完成的我試著用這樣的中間件來達到同樣的效果router := mux.NewRouter()router.Use(srv.GetCaseMiddleware())//GetCaseMiddleware middleware to make match URL case insensitivefunc (srv *Server) GetCaseMiddleware() (w mux.MiddlewareFunc) { var middleware mux.MiddlewareFunc = func(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) }) } return middleware}但如果更改 URL 大小寫,它仍然會拋出 404,是否有任何方法可以使用 gorilla-mux 實現它
1 回答

絕地無雙
TA貢獻1946條經驗 獲得超4個贊
不幸的是,在撰寫本文時,中間件函數是在gorilla/mux.
Mux 支持向 Router 添加中間件,如果找到匹配項,中間件將按照添加的順序執行,包括其子路由器。
我建議使用您提供的鏈接中的示例。
例如
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實際上還不錯。
- 1 回答
- 0 關注
- 107 瀏覽
添加回答
舉報
0/150
提交
取消