Nodejs - 一种更好的方式来处理 ajax 对服务器的请求

Nodejs - A better way to handle ajax request to the server

现在我 运行 遇到管理 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});
  }

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

您似乎在与 GET 和 POST 的概念作斗争。 GET 请求应该用于获取东西(如页面)。然而,您指定了一个 POST 请求,然后将其命名为 /get,然后将上下文放入请求正文中。

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

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

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