iris框架中路由参数类型校验可自动拒绝非法值、避免panic并减少错误处理;支持预定义宏类型(如{ id:int })、自定义校验函数(如min100)及布尔、文件路径等特殊类型。

在Iris框架中为路由参数设置类型校验,是为了让请求路径中的动态段自动拒绝非法值(比如把字符串传给{id:int}),避免手动解析失败或panic,同时减少业务代码中的类型判断和错误处理。
基础类型参数声明
直接在路由路径中用花括号包裹「参数名:类型」即可启用内置校验。Iris会在匹配阶段自动拦截不满足类型的请求,返回404而非进入Handler。
方法一:使用预定义宏类型
在app.Get等注册路由时,将路径写成/user/{id:int}、/post/{slug:alphanumeric}、/flag/{active:boolean}等形式。
【注意:参数名只能由字母组成,不能含数字或下划线】
方法二:省略类型即默认为string
/name/{username}等价于/name/{username:string},不做强校验,任何非斜杠字符都可通过。
自定义参数类型校验
当内置类型无法满足业务规则(例如要求ID是正整数且大于100),需注册自定义宏函数。
第一步:调用app.Macros().Int.RegisterFunc注册校验逻辑
例如注册一个min100函数,确保int参数≥100:
app.Macros().Int.RegisterFunc("min100", func(min int) func(string) bool { return func(paramValue string) bool { v, _ := strconv.Atoi(paramValue); return v >= min } })
第二步:在路由中使用该函数名
app.Get("/order/{id:int min100}", orderHandler) —— 此时/order/99会直接404,/order/101才进Handler。
第三步:确保导入strconv包,否则编译失败
布尔与文件路径类型实操
方法1:布尔类型必须传可识别的真/假值
/toggle/{enabled:boolean}只接受true、1、T、FALSE、0等12种字符串,其他如yes或空值会触发404。
方法2:文件名安全校验用:file
/download/{filename:file}允许字母、数字、_、-、.,但禁止空格、/、..、控制字符——这能天然防御路径遍历攻击。
方法3::path类型必须放在路径末尾且匹配多段
/static/{asset:path}可捕获/static/css/app.css整段,ctx.Params().Get("asset")返回/css/app.css;若写成/static/{asset:path}/detail则无效,Iris会报错。











