猿问

Gorilla Mux 处理卷曲请求

我想使用 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并能够将其键映射到值


慕码人2483693
浏览 216回答 1
1回答

HUH函数

您可以尝试将查询添加到您的路由器,在这种情况下,您将在一张地图中拥有所有变量。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"))}
随时随地看视频慕课网APP

相关分类

Go
我要回答