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 關注
- 115 瀏覽
添加回答
舉報