Sails.js路由参数含小数点不匹配致404问题求助
解决Sails.js 1.5.1路由参数含小数点/逗号返回404的问题
问题原因
Sails.js默认会将包含小数点的URL判定为静态资源请求,优先尝试在静态资源目录(如assets/)中查找对应文件,找不到则返回404,不会走你定义的自定义路由。这就是参数不带小数点时请求正常、带小数点时返回404的核心原因。
解决方案
方案1:针对单个路由关闭静态资源检查
在路由配置中添加skipAssets: true,强制该请求跳过静态资源检查,走自定义路由逻辑:
'get /test/len/:abc': { controller: 'TestController', action: 'len', skipAssets: true }
方案2:为路由参数指定明确匹配正则(可选增强)
如果需要严格限制参数格式,可以同时为abc参数添加正则匹配规则,确保只接收包含负号、小数点、逗号和数字的字符串:
'get /test/len/:abc([-.,\\d]+)': { controller: 'TestController', action: 'len', skipAssets: true }
验证修改
修改路由后,发起请求/test/len/-2.2,3.2,5.4即可正常路由到TestController的len动作,你可以在控制器中通过req.param('abc')获取完整的参数字符串,再进行拆分和处理。
内容的提问来源于stack exchange,提问作者ryndm
相关产品推荐
相关产品推荐

