如何编写Express路由排除/api路径以避免无限循环?
解决全局页顶脚本无限调用/api接口的问题
嘿,太懂你这种踩坑的憋屈感了——全局运行的页顶脚本不小心在/api路径下也触发,结果自己调用/api接口,直接陷入无限循环,头都大了对吧?
其实根本不用复杂的正则,用最简单的路径前缀判断就能搞定,代码还超精简:
// 只在非/api开头的页面执行你的页顶逻辑 if (!window.location.pathname.startsWith('/api/')) { // 这里放你的页顶程序代码 }
如果你项目里习惯用正则做路由判断,那得确保正则精准匹配以/api/开头的路径,再取反执行逻辑:
// 正则匹配所有/api/开头的路径,取反后就是我们要放行的页面 const isApiPage = /^\/api\/.*$/.test(window.location.pathname); if (!isApiPage) { // 运行页顶程序 }
之前你正则没成功,大概率是没写对匹配规则——比如漏了开头的^(表示从字符串起始位置匹配),或者没转义斜杠?上面这个正则是精准锁定所有以/api/开头的路径,不会误判其他包含api字符的页面。
相比正则,startsWith方法更直观,代码也更短,完全满足你“尽可能精简路由”的需求,推荐优先用这个方案~
内容的提问来源于stack exchange,提问作者OhkaBaka
相关产品推荐
相关产品推荐

