快速路线 - 制作网址params.id的最佳方式是提供静态和动态内容

时间:2014-01-05 19:56:03

标签: node.js express routes

假设我有一个像

这样的网址
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
    }

}

这是最好的方法吗?是否有更有效/有组织的方式来做到这一点?

1 个答案:

答案 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。订单在这里很重要。