用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.path
。req.path
是req.getPath
中req.getPath的别名
我并不是说它们是相似的,但是上述三件事情是移植Express插件的主要障碍。 根据我的经验,在大型企业应用程序和个人项目中,Restify与Express相比具有许多优势。
您需要使用redirect状态码302。
res.send(302);
或res.send(302, 'your response');