Javascript 如何重定向到Express 4中的可装载路由处理程序?

Javascript 如何重定向到Express 4中的可装载路由处理程序?,javascript,express,routes,Javascript,Express,Routes,我正在使用可装载的路由处理程序: router.use('/api/v1', require('./sinograms_api')); var routes_sinograms = require('./sinograms'); router.use('/sinograms', routes_sinograms); router.use('/sinogram', routes_sinograms); 这样我就可以重新定位所有代码,而不必更改所有路径 这很好,除了在我的路由处理程序中,如果我必

我正在使用可装载的路由处理程序:

router.use('/api/v1', require('./sinograms_api'));

var routes_sinograms = require('./sinograms');
router.use('/sinograms', routes_sinograms);
router.use('/sinogram', routes_sinograms);
这样我就可以重新定位所有代码,而不必更改所有路径

这很好,除了在我的路由处理程序中,如果我必须重定向到另一个路由处理程序,唯一的方法就是使用路径

例如,在sinograms_api.js中:

res.redirect('/sinograms/list') 
// where /list is a path defined in sinograms.js

是否有更模块化的方法可以重定向到另一个路由处理程序而不使用harcoded路径?

不这样认为-不幸的是,您最好的选择可能是内联函数。路由处理程序应该是您想要支持的URL(并且不应该更改,除非您有意重新设计网站)并且应该与实际文件的服务位置完全不同(只需调整服务器端代码即可轻松更改)。你到底想改变什么?@jfriend00让我们想象一下,我必须将api重新定位到一个新版本“/api/v2”,或者出于任何原因(seo,添加了新语言),我必须将/sinograms/更改为一个更有意义的名称/hanzi/。我知道我不必经常这样做,但如果我仍然必须在重定向中更改硬编码路径,那么使用模块化路由处理程序(我可以在任何地方挂载)的目的是什么?我知道这是一个非常特殊的情况(路径更改+路由间处理程序重定向),但我要求提供正确的方法,因为当前的可重新定位路由处理程序,硬编码重定向对我来说似乎有点奇怪……似乎你应该使用路由器来进行这种类型的使用,你可以更改路由器的顶层路径,然后不必更改实际路由器中的任何代码。如果您要更改实际的公共URL,并且您正在代码中执行
res.redirect()
,那么您也必须更改重定向。这是没有办法的。您可以使用自己的代码抽象它,方法是创建自己的重定向函数,该函数为根使用自己的不变名字,然后在一个位置添加实际根,这样您只需为所有重定向更改一个位置。仅供参考,您几乎不想更改API的公共路径,因为当您这样做时,您可能会破坏所有使用该API的客户端。通常,您会在新路径上添加新版本的API。