为了防止路由器匹配无效输入,你可以指定一个匹配器。例如,你可能希望像 /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>