【问题标题】:Gorilla Mux to handle curl requestGorilla Mux 处理 curl 请求
【发布时间】: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()

标签: go gorilla servemux


【解决方案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"))
}

【讨论】:

    猜你喜欢
    • 2015-04-02
    • 2014-11-28
    • 2017-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-14
    • 2020-08-26
    • 1970-01-01
    相关资源
    最近更新 更多