以下面的url为例,这个例子实际上是《go语言圣经》中7.7章节http.handler的一个例子。我们需要更新袜子socks的价钱为16,鞋子shoes的价格为100。我们把它们写到同一个url中。对于这种一个url有多个参数的情况该如何处理呢?
http://localhost:8000/update?item=socks&price=16&item=shoes&price=100
使用如下的代码来查看请求参数。req.URL.Query()
的返回值是Values类型,这个类型实际上是type Values map[string][]string
,因此我们可以遍历这个map。
func (db database) update(w http.ResponseWriter, req *http.Request) {
query := req.URL.Query()
for key, item := range query {
fmt.Fprintln(w, key, item)
}
}
遍历map后得到的结果如图所示。从图中可以看出map类型的query变量有两项,分别是item [socks shoes]和price [16 100]。socks对应16,shoes对应100。拿到待更新的值后就可以更新对应的变量啦!