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) .
为了进一步阅读,我会查看:
现在我 运行 遇到管理 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) .
为了进一步阅读,我会查看: