我对Node.js和Express都很陌生(对于一般的http内容来说相对较新)。在浏览各种教程时,我很好奇为什么路由中定义的路径始终具有前导斜杠。你可能会使用类似router.get('/sub_path', handler);
的东西安装app.use('/parent', the_router);
这样的东西,然后通过像http://localhost:3000/parent/sub_path
这样的地方访问整个东西。我尝试省略对get()
和use()
的调用中的斜杠,确定已停止正常工作。
是否存在技术原因,斜线是必要的,还是只是一个任意的设计决策(可能是为了一致性或清晰度等)?我没有在服务器中看到任何错误,所以是否有一种情况是缺少斜线实际上有用的东西?
答案 0 :(得分:3)
好吧,当您有http://www.somedomain.com/somepath
之类的网址时,该网址中的路径为/somepath
。这不是somepath
。它是/somepath
。因此,如果您希望将上述网址与路线相匹配,则需要匹配/somepath
。
我认为Express可能会“假设”每个路由字符串前面都有一个隐含的"/"
并且不会让你输入它,但这会有点误导。您要求匹配的路线以/
开头。
您可以使用正则表达式匹配路线,但这是我见过的唯一不使用前导/
的情况。
有关设计/编写代码时实际开发人员动机的进一步讨论,您必须询问实际编写Express的人员。我们不能在这里说些什么。