快递路线是以前导斜线定义的,是否有技术原因?

问题描述:

我对Node.js和Express很陌生(对于一般的东西比较新)。在阅读各种教程时,我很好奇为什么路径中定义的路径始终具有前导斜杠。你会有类似router.get('/sub_path', handler);的东西,将使用类似app.use('/parent', the_router);这样的东西安装,然后整个东西将被访问到像http://localhost:3000/parent/sub_path之类的地方。我尝试在get()use()的调用中省略了斜杠,并确保足够的事情停止正常工作。快递路线是以前导斜线定义的,是否有技术原因?

是否有技术上的原因,斜杠是必要的或者它只是一个任意的设计决定(也许是为了一致性或清晰度或什么)?我没有在服务器上看到任何错误,所以有可能是缺少斜线实际上有用的情况?

+0

我怀疑会有一个“技术”的原因,因为它无足轻重地使快速连接路径片段正确(请参阅nodejs API中的'path.join()')。原因可能是或多或少强化语义模式。 –

那么,当你有一个像http://www.somedomain.com/somepath这样的URL时,该URL中的路径是/somepath。这不是somepath。这是/somepath。因此,如果您想将上述网址与路线相匹配,则需要匹配/somepath

我认为Express有可能“假设”每一个路由字符串在它的前面有一个隐含的"/",并且不会让你键入它,但它会有点误导。您要求匹配的路线以/开头。

您可以使用正则表达式来匹配路线,但这是唯一的情况,我已经看到您不使用领先的/

有关设计/编写代码时实际开发人员动机的进一步讨论,您必须询问实际编写Express的人员。不是我们可以在这里说的东西。