Golang:没有命名为params

时间:2014-10-30 09:07:49

标签: parameters go

例如,我有一个请求:

POST /api/users/1/categories/2/posts/3

我如何访问此参数?

我试过了:

req.ParseMultipartForm(defaultMaxMemory)

req.Form.Get("id")
req.Form.Get("1")
req.Form.Get("_1")

但它不起作用。

关于GET的同样问题:

GET /api/users/1/categories/2/posts/3

如何获得没有命名的参数?

req.URL.Query().Get(???)

1 个答案:

答案 0 :(得分:6)

如果您使用默认的http服务器库,则需要解析Url路径部分并将其解压缩。

像Gorilla Mux(我个人喜欢)这样的库可以用来自动添加这个逻辑。 http://www.gorillatoolkit.org/pkg/mux

使用Gorilla / mux,当您注册处理程序时,您可以这样注册:

r := mux.NewRouter()
r.HandleFunc("/api/users/{userId}/categories/{categoryId}/posts/{postId}", 
             MyHandler)

然后在您的处理程序中,您可以访问它们:

vars := mux.Vars(request)
userId := vars["userId"]
// etc...