为了防止路由器匹配无效输入,你可以指定一个匹配器。例如,你可能希望像 /colors/[value]
这样的路由能匹配类似 /colors/ff3e00
这样的十六进制值,但不匹配像 /colors/octarine
这样的颜色名称或任何其他任意输入。
首先,创建一个名为 src/params/hex.js
的新文件,并从中导出一个 match
函数:
src/params/hex
export function match(value) {
return /^[0-9a-f]{6}$/.test(value);
}
然后,要使用这个新的匹配器,将 src/routes/colors/[color]
重命名为 src/routes/colors/[color=hex]
。
现在,当有人导航到该路由时,SvelteKit 将验证 color
是否是有效的 hex
值。如果不是,SvelteKit 将尝试匹配其他路由,最终返回 404。
匹配器在服务端和浏览器端都会运行。
1
2
<h1>color picker</h1>