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 的表单值而不是targetmessage'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 请求的主要内容,如果未能解决你的问题,请参考以下文章

小白学标准库之 mux

GolangWeb 入门 08 集成 Gorilla Mux

GolangWeb 入门 08 集成 Gorilla Mux

内部处理程序中的 Gorilla Mux 路由器仅工作一次,然后给出 404 页面未找到

如何使用 Gorilla 处理 DELETE 调用的预检请求?

使用httputil和gorilla / mux反向代理