Nodejs - 处理服务器的ajax请求的更好方法

时间:2015-10-20 18:03:15

标签: ajax node.js request

现在我遇到了在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});
  }

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

1 个答案:

答案 0 :(得分:1)

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

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

因此,您有一堆被称为post请求的get请求。真的你想要的是这样的:

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

为了处理“null”页面,你只需将它们自动路由到/ page url(因为如果没有参数,它只是/ page url)。

为了进一步阅读,我会查看:

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

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