Go 1.22中如何获取URL中所有路径参数的键值对?
在Go 1.22的net/http中获取所有路径参数键值对
Go 1.22的net/http包原生支持路径参数,但PathValue()方法只能单独获取指定名称的参数值,无法直接批量获取所有键值对。你可以通过请求上下文(Context)直接取出内部存储的参数映射,实现一次性获取所有路径参数:
实现代码
package main import ( "fmt" "net/http" ) func main() { // 定义带路径参数的路由 http.HandleFunc("/users/{userId}/posts/{postId}", func(w http.ResponseWriter, r *http.Request) { // 从Context中取出所有路径参数 params, ok := r.Context().Value(http.PathParamsKey).(map[string]string) if !ok { fmt.Fprintf(w, "获取路径参数失败") return } // 遍历输出所有键值对 for key, val := range params { fmt.Fprintf(w, "%s: %s\n", key, val) } }) // 启动服务 http.ListenAndServe(":8080", nil) }
说明
http.PathParamsKey是Go 1.22新增的导出标识符,专门用于从请求Context中获取路径参数的映射集合- 取出的参数是
map[string]string类型,键为路由中定义的参数名(如userId、postId),值为请求URL中对应的实际路径片段 - 该方法无需预先知晓参数名称,直接遍历map即可获取所有键值对
内容的提问来源于stack exchange,提问作者Prakhar Mishra
相关产品推荐
相关产品推荐

