亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 gorilla mux 實現不區分大小寫的 URL 匹配

如何使用 gorilla mux 實現不區分大小寫的 URL 匹配

Go
胡說叔叔 2023-05-15 10:38:47
我需要在大猩猩 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實際上還不錯。


查看完整回答
反對 回復 2023-05-15
  • 1 回答
  • 0 關注
  • 107 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號