为了账号安全,请及时绑定邮箱和手机立即绑定

Gorilla mux - 在将请求传递给路由器之前修改请求

Gorilla mux - 在将请求传递给路由器之前修改请求

Go
杨魅力 2022-05-18 16:09:31
有没有办法在*http.Request对象被解析并转发给Gorilla mux 路由器处理程序之前捕获它?例如,我们有一些路由映射及其处理程序:r := mux.NewRouter()r.HandleFunc("/products/{key}", ProductHandler)r.HandleFunc("/articles/{category}/", ArticlesCategoryHandler)我计划使用动态语言前缀(2 个符号)。例子:没有语言代码(默认语言选项):https://example.com/products/1https://example.com/articels/2带语言代码:https://example.com/ru/products/1https://example.com/ru/articels/2有没有办法在中间件中捕获完整的 URL,提取语言(如果存在),然后在进行一些修改后将它传递给 Gorilla mux 路由器?它将有助于构建漂亮的 URL:https://example.com/products/1 <- default languagehttps://example.com/ru/products/1 <- russian language (same resource but in different language)这看起来比这个变种更有吸引力:https://example.com/en/products/1 <- mandatory default languagehttps://example.com/ru/products/1 <- russian language
查看完整描述

1 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

这样的事情可能会起作用:


r := mux.NewRouter()

r.HandleFunc("/products/{key}", ProductHandler)

r.HandleFunc("/articles/{category}/", ArticlesCategoryHandler)


m := http.NewServeMux()

m.HandeFunc("/", func(w http.ResponseWriter, req *http.Request) {

    // do something with req

    r.ServeHTTP(w, req)

})

http.ListenAndServe(":8080", m)


查看完整回答
反对 回复 2022-05-18
  • 1 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号