>问题是我不知道如何区分。
我试过Router.post('/signup')
,
在网站中,我想重定向到用户页面成功和
在网络服务中,我想发送响应的json数组,
我不是要求编写完整的代码,只是为我指出正确的研发方向。
您可以为注册创建两个 API 端点。喜欢Router.post('/api/signup')
和Router.post('/signup')
.
网络服务:
所以当你调用这个 API 端点时,让我说,它会返回一个user
对象。
Router.post('/api/signup', (req, res) => {
// some stuff;
return user;
});
网站:
在此路由器中,使用一些外部模块(如request
或axios
(向/api/signup
发出 post 请求,如果实现,将使用 cookie 获取用户对象(护照(。
Router.post('/signup', (req, res) => {
//some stuff
request.post('http://www.example.com/signup', form: {key:'value'}}, (err, response, body) => {
if (response.user)
res.redirect('/point');
});
});
您应该为网站和 Web 服务提供不同的路由。两个路由都应使用两个中间件。
第一个中间件应该完成实际的注册工作。您应该在网站和 Web 服务中使用此中间件。
第二个中间件应该处理善后。对于网站,这是您进行重定向的地方。对于 Web 服务,这是您发送 JSON 响应的位置。
下面是一个示例代码:
websiterouter.post('/signup', bodyParser.urlencoded({extended: true}), signupMiddleware, redirectionMiddleware);
webservicerouter.post('/signup', bodyParser.json(), signupMiddleware, responseMiddleware);
哪里:
var signupMiddleware = function(req, res, next){
db.save({ 'username': req.body.username, 'password': req.body.password });
next();
};
var redirectMiddleware = function(req, res, next){
res.redirect('/userPage');
};
var responseMiddleware = function(req, res, next){
res.status(200).json({ 'successfullyRegistered': true });
};
免責聲明:
- db.save 只是需要做什么的松散表示。
- 保存用户数据而不检查重复的用户名可能是一种不好的做法
- 将未加密的密码保存到数据库中绝对是一种可怕的做法,请不要这样做。