2015-10-20 89 views
0

现在我遇到了在nodeJS服务器上管理AJAX请求的问题。目前我有这个系统它的工作原理,但它很丑并且效率不高。Nodejs - 一种更好的方法来处理服务器的AJAX请求

router.post('/get', function(req, res) { 
    var request = req.body.request; 
    if (request == null) { 
    res.json({success: 'false', error: 'Response returned null'}); 
    return; 
    } 
    if (request == "render_page") { 
    var page = req.body.page; 
    if (page == null) { 
     res.json({success: 'false', error: 'Page returned null'}); 
     return; 
    } 
    res.render(page); 
    } else if (request == "render_article") { 
    var temp = { 
     articles: [ 
     {title: 'ABC', text: 'This is a test article'}, 
     {title: 'XYZ', text: 'Just another random article'} 
     ] 
    }; 
    res.render('template/article-format', temp); 
    } else { 
    res.json({success: 'false', error: "Unknown request " + request}); 
    } 

有没有更好的方法来做到这一点,甚至可能使它动态?如果出现问题,服务器也喜欢崩溃,所以就是这样。

+0

在未来,请像这样的职位上http://codereview.stackexchange.com/ – Devnetics

回答

1

你似乎在与GET和POST的概念斗争。 GET请求应该用于提取事物(如页面)。但是,您已指定POST请求,然后将其命名为/ get,然后将该上下文放在请求正文中。

如果您只是在您的GET请求中使用了一些参数,那么您不需要发送包含正文的帖子(我假设您正在使用POST请求,因为您认为您需要能够发送请求上下文数据,在这种情况下是页面名称)。

所以,你有一堆被称为post请求的get请求。真的是你想要的东西是这样的:

router.get('/page/:page', function(req, res) { 
    var page = req.params.page; 
    // Logic here 
}); 

和一个自动(处理“空”页面,你只需将其路由到/网页URL,因为如果没有参数,它仅仅是个/页网址)。

对于进一步的阅读,我想看看在:

http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html

http://expressjs.com/4x/api.html#req

相关问题