2015-10-20 3 views
0

Теперь у меня возникла проблема с управлением запросами ajax на сервере nodeJS. В настоящее время у меня есть эта система, она работает, но она уродливая и не такая эффективная.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, потому что считаете, что вам нужно отправить сообщение запрашивать контекстные данные, в этом случае имя страницы).

Итак, у вас есть куча запросов на получение, которые называются пост-запросами. На самом деле то, что вы хотите что-то вроде этого:

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

Смежные вопросы