iris中需用{path wildcard}语法定义通配符参数以匹配多级路径,如/files/{path wildcard};处理函数中调用ctx.params().get("path")获取不带前导斜杠的子路径字符串。

Iris框架通配符路由匹配多级路径
要在Iris中让一个路由规则精准捕获任意深度的子路径(比如 /files/a/b/c/d 或 /api/v1/users/123/logs/error/stack),不能只靠普通命名参数,必须启用通配符语法并正确声明参数类型,否则请求会直接 404。
定义通配符参数
在路由路径末尾使用 {path *wildcard} 语法声明通配符参数,其中 path 是参数名,*wildcard 是通配符标识符,不可省略星号和单词 wildcard。
这一步必须写对,漏掉星号或拼错 wildcard 将导致 Iris 按普通字符串参数解析,无法匹配多级路径。
app.Get("/files/{path *wildcard}", handler)
获取通配符参数值
在请求处理函数中,调用 ctx.Params().Get("path") 获取完整匹配的子路径字符串。
注意:该值不带开头斜杠,例如请求 /files/a/b/c → Get("path") 返回 "a/b/c",不是 "/a/b/c"。
ctx.Params().Get("path")
验证通配符是否生效(三步实测)
第一步:启动服务后,用 curl -I http://localhost:8080/files/abc 测试单级路径 → 应返回 200。
第二步:再执行 curl -I http://localhost:8080/files/x/y/z/123 → 若仍返回 200,说明通配符已生效;若返回 404,检查路由注册语句是否漏了 *wildcard。
第三步:在 handler 中打印 ctx.Params().Get("path") 的值,确认输出为 x/y/z/123(无前导斜杠),而非空字符串或 panic。











