【发布时间】:2020-06-01 10:52:48
【问题描述】:
我正在学习 Go 并遇到了 gorilla/mux 路由器。我想在文本文件中包含动态路由,例如:
/user/1
/post/1
我为此编写了以下代码:
func (s *Server) RegRoutes(routes []Route) {
for _, r := range routes {
func(route Route) {
s.Router.HandleFunc(route.Path, func(w http.ResponseWriter, r *http.Request) {
w.Header().Add("Content-Type", "application/json")
s.sendJson(w, route) // send response to client
}).Methods(route.Method)
}(r)
}
}
一切正常。但我想编辑文本文件并添加更多字段或编辑现有字段而不重建项目或重新启动服务器。我找到了this,但我不明白它是什么,我不知道如何使用它。
是否有在运行时修改现有路由或添加更多路由?
编辑:
我添加了这个:
s.Router.HandleFunc("/reload", func(w http.ResponseWriter, r *http.Request) {
s.mu.Lock()
s.Router = mux.NewRouter()
s.mu.Unlock()
// load text file and register new routes here
....
s.Router.Walk(func(route *mux.Route, router *mux.Router, ancestors []*mux.Route) error {
tpl, err1 := route.GetPathTemplate()
met, err2 := route.GetMethods()
fmt.Println(tpl, err1, met, err2)
return nil
})
fmt.Fprintf(w, "RELOAD")
})
当我在注册新路线并替换 Router 后打印路线时,它们已注册,但当我在浏览器中浏览路线时,出现 404 错误。
【问题讨论】:
标签: go server routes gorilla mux