疑问:http服务端怎么把每次请求的参数记录下来

star24 · · 2884 次点击
放假好久没看论坛了。快下班草草写了个,将就看吧,不知道合不合你意思。如果要每个session 一个id的话,就弄个 map[session]*Req。 ```go package main import ( "io" "log" "math/rand" "net/http" "strconv" ) type Req struct { logid string } // hello world, the web server func mainHandle(w http.ResponseWriter, req *http.Request) { r := NewReq() msg := r.subHandle() io.WriteString(w, msg) } func (r *Req) subHandle() string { return r.logid + "hello" } func main() { http.HandleFunc("/hello", mainHandle) err := http.ListenAndServe(":12345", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } } func NewReq() *Req { r := &Req{ logid: strconv.Itoa(rand.Intn(10000)), //此处由专门的生成器生成,每次不一样 } return r } ```
#9
更多评论
polaris
社区,需要你我一同完善!
你这种用全局变量的方式肯定不行啊,为什么不直接传递参数,而要通过全局变量保存?
#1
每个函数都带上这个参数,感觉代码不优雅,也不好维护(以后新增的函数都得记得带上),有没有其他办法?
#2