douzhu6149 2015-02-07 19:28
浏览 22
已采纳

大猩猩Mux处理卷曲请求

I want to use Gorilla mux to handle api requests.

Commands will be something like:

curl http://0.0.0.0:8000/api/myapiname/v1?number=10&target=google.com&message=hello

And I am serving with following handlers:

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"))
}

But for the curl requests I only get the form value of number not target and message's

What is the correct way of handle api requests using Gorilla mux? Do I need sub routing?

I just want to receive any http request of form http://0.0.0.0:8000/api/myapiname/v1?number=10&target=google.com&message=hello and be able to map its key to value

THanks!

  • 写回答

1条回答 默认 最新

  • doujiang1993 2015-02-08 02:30
    关注

    You may try to add Queries to your router, in that case you will have all vars in one map.

    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"))
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 远程桌面文档内容复制粘贴,格式会变化
  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题