1 回答

TA贡献2065条经验 获得超14个赞
mux.Vars()仅在路由匹配时才会填充(因此 Gorilla mux 知道在哪里寻找它们)。路由中的匹配是通过在路由中预期变量值的地方使用或者{name}或占位符来完成的。{name:pattern}
所以对于以下路线:
r.HandleFunc("/articles/{category}/{id:[0-9]+}", ArticleHandler)
您将拥有 vars 键category并id使用它们各自的值进行设置:
vars := mux.Vars(r)
fmt.Fprintf(w, "Category: %v\n", vars["category"])
fmt.Fprintf(w, "Id: %v\n", vars["id"])
在您的代码中,您可以修复/peoplebyid这种方式(取决于 id 是什么)以使您的GetPeopleById()处理程序工作:
func (h HandlerProvider) GetRouter() *mux.Router {
// ...
r.HandleFunc("/people/{id:[0-9]+}", GetPeopleByID).Methods("GET")
// ...
}
有关如何在此处使用 vars 的信息,请参阅 Gorilla Mux 文档:https ://github.com/gorilla/mux#examples ,特别是以以下开头的部分:
路径可以有变量。它们使用 {name} 或 {name:pattern} 格式定义。如果未定义正则表达式模式,则匹配的变量将是任何东西,直到下一个斜杠。
- 1 回答
- 0 关注
- 118 浏览
添加回答
举报