Golang:没有命名为params

cna*_*ize 1 parameters go

例如,我有一个请求:

POST /api/users/1/categories/2/posts/3
Run Code Online (Sandbox Code Playgroud)

我怎样才能访问这个参数?

我试过了:

req.ParseMultipartForm(defaultMaxMemory)

req.Form.Get("id")
req.Form.Get("1")
req.Form.Get("_1")
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

关于GET的同样问题:

GET /api/users/1/categories/2/posts/3
Run Code Online (Sandbox Code Playgroud)

怎么没有命名参数?

req.URL.Query().Get(???)
Run Code Online (Sandbox Code Playgroud)

Not*_*fer 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)
Run Code Online (Sandbox Code Playgroud)

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

vars := mux.Vars(request)
userId := vars["userId"]
// etc...
Run Code Online (Sandbox Code Playgroud)