2015-10-20 90 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

相關問題