Gorilla Mux 处理 curl 请求
Posted
技术标签:
【中文标题】Gorilla Mux 处理 curl 请求【英文标题】:Gorilla Mux to handle curl request 【发布时间】:2015-04-07 19:29:42 【问题描述】:我想使用 Gorilla mux 来处理 api 请求。
命令类似于:
卷曲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
请求,我只得到number
的表单值而不是target
和message
's
使用 Gorilla mux 处理 api 请求的正确方法是什么?我需要子路由吗?
我只想接收http://0.0.0.0:8000/api/myapiname/v1?number=10&target=google.com&message=hello
形式的任何 http 请求并能够将其键映射到值
谢谢!
【问题讨论】:
为我工作。你能显示你在哪里注册你的路由器吗? 我刚注册router := mux.NewRouter()
【参考方案1】:
您可以尝试将查询添加到您的路由器,在这种情况下,您将在一张地图中拥有所有变量。
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"))
【讨论】:
以上是关于Gorilla Mux 处理 curl 请求的主要内容,如果未能解决你的问题,请参考以下文章
GolangWeb 入门 08 集成 Gorilla Mux
GolangWeb 入门 08 集成 Gorilla Mux
内部处理程序中的 Gorilla Mux 路由器仅工作一次,然后给出 404 页面未找到