我对 Node.js 和 Express 还很陌生(而且对一般的 http 东西也比较陌生)。在浏览各种教程时,我很好奇为什么路由中定义的路径总是有一个前导斜杠。您将拥有类似 router.get('/sub_path', handler);
的内容,它将使用类似 app.use('/parent', the_router);
的内容进行安装然后可以通过像 http://localhost:3000/parent/sub_path 这样的地方来访问整个内容。我尝试省略对 get()
和 use()
调用中的斜杠,果然一切都停止正常工作。
是否有技术原因表明斜杠是必要的,或者这只是一个任意的设计决定(也许是为了一致性或清晰度或其他原因)?我没有在服务器中看到任何错误,那么是否存在缺少斜杠实际上起到了有用作用的情况?
最佳答案
好吧,当您有一个像 http://www.somedomain.com/somepath
这样的 URL 时,该 URL 中的路径就是 /somepath
。它不是somepath
。它是/somepath
。因此,如果您想将上述 URL 与路由匹配,则需要匹配 /somepath
。
我认为 Express 可以“假设”每个路由字符串前面都有一个隐式 "/"
并且不会让您键入它,但它会有点误导。您要求匹配的路线以 /
开头。
您可以使用正则表达式来匹配路由,但这是我见过的唯一不使用前导 /
的情况。
要进一步讨论设计/编写代码时的实际开发人员动机,您必须询问实际编写 Express 的人。我们不能在这里谈论这些。
关于node.js - 快速路由定义前导斜杠是否有技术原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38650755/