使路由对一个ejs文件唯一



我想要一个像localhost3000/hh234due这样的URL,它有一个唯一的id,可以路由到特定的页面,但我所做的与其他路由冲突。

如何使/:id对一个视图唯一


module.exports = function (app) {
app.get('/:id', function (req, res) {
res.render('page/index');
});  
}

由于路由是按顺序测试的,请将其放在序列中的最后,与之冲突的任何内容都将优先于它。

一般来说,这只是一种有问题的做法,因为

app.get('/:id', ...)

匹配每一条可能的顶级路线,并引发与您在网站工作中想要/需要的其他顶级路线的冲突。

你可以通过总是把它作为最后一个可能的路由定义来实现它,但我建议把URL改成之类的东西

http://localhost:3000/id/hh234due

然后你可以使用:

app.get('/id/:id', ...)

并且不会与您的任何其他顶级路线发生任何冲突。

当以这种方式进行时,URL结构也更具声明性,因为/id部分清楚地说明了这个URL是什么,而不是以前你更依赖于这样一个事实,即它看起来不像你网站上的任何其他顶级路由,所以"我想"它一定是一个id,对于未来可能在这个网站上工作的其他开发人员来说,它不是那么具有声明性或清晰。

将专用页面路由置于通用页面路由之前就足够了,如下所示:

module.exports = function (app) {
app.get('/hh234due', function (req, res) {
res.render('<your special page>');
}); 
app.get('/:id', function (req, res) {
res.render('page/index');
});  
}

最新更新