You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 12:12:06