我想使用 Gorilla mux 来处理 api 请求。命令将类似于:curl http://0.0.0.0:8000/api/myapiname/v1?number=10&target=google.com&message=hello我正在为以下处理程序服务:router.Methods("GET").Path("/api/myapiname/{version}").HandlerFunc(apihandler)func apihandler(rw http.ResponseWriter, q *http.Request) { vars := mux.Vars(q) log.Println(vars["version"]) log.Println(q.FormValue("number")) log.Println(q.FormValue("target")) log.Println(q.FormValue("message"))}但是对于curl请求,我只得到numbernottarget和message's的表单值使用 Gorilla mux 处理 api 请求的正确方法是什么?我需要子路由吗?我只想接收表单的任何 http 请求http://0.0.0.0:8000/api/myapiname/v1?number=10&target=google.com&message=hello并能够将其键映射到值
1 回答

HUH函数
TA贡献1836条经验 获得超4个赞
您可以尝试将查询添加到您的路由器,在这种情况下,您将在一张地图中拥有所有变量。
router.Methods("GET").Path("/api/myapiname/{version}").Queries("number", "{number:[0-9]+}", "target", "{target:[^&]+}", "message", "{message:[^&]+}").HandlerFunc(apihandler)
func apihandler(rw http.ResponseWriter, q *http.Request) {
vars := mux.Vars(q)
log.Println(vars["version"])
log.Println(vars("number"))
log.Println(vars("target"))
log.Println(vars("message"))
}
- 1 回答
- 0 关注
- 215 浏览
添加回答
举报
0/150
提交
取消