假设我有一个像
这样的网址www.foo.com/abc
www.foo.com/huyr
... etc
此示例中的'abc'和'huyr'是ID,我从数据库中获取信息,其中密钥是该ID。
但是假设我还希望静态链接(它将提供静态页面)遵循相同的url格式:
www.foo.com/about
www.foo.com/contact
最好的方法是什么?
现在我有类似的想法
exports.view = function(req, res) {
var id = req.params.id
switch (id) {
case 'about':
// load 'about' controller
break
case 'contact':
// load 'contact' controller
break
default:
// proceed with this function
}
}
这是最好的方法吗?是否有更有效/有组织的方式来做到这一点?
答案 0 :(得分:3)
在我看来,最好的办法就是为这些页面服务,无论是否静态,就像你对任何其他页面一样。使用正确的页面回复GET请求。
// will respond to http://www.site.com/about
app.get('/about', function( req, res, next ) {
res.render('about.ejs' // etc
});
// will respond to http://www.site.com/contact
app.get('/contact', function (req, res, next) {
res.render('contact.ejs' // etc
});
// will respond to any first subdir (iirc) http://www.site.com/(?)
app.get('/:id', function ( req, res, next ) {
var id = req.param['id'];
// db query, etc
});
你的静态页面当然可以让它更清洁。您唯一需要确定的是在id路由之前响应那些静态路由,否则您将使用您想要响应ID的路由来响应about / contact url。订单在这里很重要。