ExpressJS重定向和返回数据请求

时间:2015-01-24 10:52:16

标签: node.js express

说我要从/1重定向到/2。显然我可以重定向,并让浏览器向/2发送单独的请求。

有没有办法可以调用res.location('/2')然后从该网址返回数据,就像对该网址的请求是GET请求一样?

谢谢!

编辑:从1到2的重定向将在1的验证POST上发生,可能会失败,返回1或成功,重定向到2.我想要的是

app.post('/2', function(req, res) {
    if (validate(req.body) {
        res.location('2');
        res.send(app.getResponseFor('1'));
    } else {
        res.render('2');
    }
});

我认为这样做的一种方法是将函数从1中删除,并且只需要调用1和2。也许有人能想出更优雅的方式!

1 个答案:

答案 0 :(得分:0)

这更像是一个"设计问题"。您可以通过两种方式实现此目的:

使用智能客户端:

  • 客户端以ajax模式请求/2资源
  • 服务器以4xx代码响应(例如401表示未经授权)
  • 客户端捕获此异常(错误情况)并从/1请求资源而不重定向用户

在服务器端使用助手:

  • 您将应用程序逻辑拆分为传统的MVC架构,
  • /2端点的控制器使用一些辅助函数,以便检查请求的条件
  • 如果请求没有遵循某些规则,则辅助函数会为控制器提供适当的内容,就好像客户端已请求/1端点

希望这有帮助。

干杯。