我想扩展http.Request
结构以包含url中存在的参数。我知道像大猩猩这样的优秀图书馆已经做到了这一点,但我想了解它是如何在螺母和螺栓水平上完成的。
以下是我正在尝试做的一个例子:
// server.go
func Vars(r *http.Request) map[string]string {
var args map[string]string
args = make(map[string]string)
s := r.URL.Path.split('/')[1:]
for str := range s {
_, arg, _ := regexp.MatchString("\{\w+\}", str)
append(args, arg)
}
return args
}
httpMock.HandleFunc("/myurl/{arg1}/", MyHandler)
func MyHandler(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Success! " + r.Vars()["arg1"]))
}
但是我得到一个超出范围异常的索引。任何人都可以帮我弄清楚如何做到这一点吗?