用NodeJS和Restifyredirect客户端

我正在为NodeJS,Restify和PassportJSbuild立一个REST后端进行身份validation。 一切工作除了最后一步,这是将客户端从后端/login/ Facebook /callbackredirect到应用程序的主页。

我在网上search,发现很多ExpressJS的答案,但没有任何有用的Node-Restify。 我已经设法拿起一些代码片段,这是我现在正在尝试的:

app.get('/api/v1/login/facebook/cb', passport.authenticate('facebook', { scope: 'email' }), function(req, res) { req.session.user = req.user._id; res.header('Location', '/#/home'); res.send(); }); 

响应被发送,但位置标题不包括在内,并且客户机呈现白色屏幕。 如何使用Node-Restify API做适当的redirect?

Restify的Response界面现在有一个redirect方法 。

在撰写本文时,有一个testing显示如何在这里使用它。

该testing的内容是:

 server.get('/1', function (req, res, next) { res.redirect('https://www.foo.com', next); }); 

许多使用Restify的人更熟悉ExpressJS。 重要的是要明白(在撰写本文时),影响移植Express插件的三个主要公共API差异之一在于res.redirect中的res.redirect方法要求您传递next (或引发InternalError )。 我亲自将几个模块从Express移植到Restify,主要的API差异起初是(在Restify中):

  • server.use仅用于path和HTTP方法不可知的中间件
  • res.redirect需要你通过next
  • 一些成员或Request接口是方法而不是值,比如req.pathreq.pathreq.getPath中req.getPath的别名

并不是说它们是相似的,但是上述三件事情是移植Express插件的主要障碍。 根据我的经验,在大型企业应用程序和个人项目中,Restify与Express相比具有许多优势。

您需要使用redirect状态码302。

res.send(302);res.send(302, 'your response');