将重定向路线快递到另一条路线

时间:2020-04-18 11:40:23

标签: node.js express

如果用户在/user上请求获取请求,则它应该像对静态文件一样执行此/api/user的路由。 用户请求https://example.com/user,然后应在下面的代码中执行

app.get('/api/user', (req,res,next) => {
    Do Something
})

3 个答案:

答案 0 :(得分:2)

您可以使用res.redirect重定向到另一条路线:

app.get('/user',(req,res)=>{
   res.redirect('/api/user');
})

答案 1 :(得分:2)

您可以用不同的方法来解决这个问题。

解决方案#1

app.get('/user', (req, res, next) => {
   res.redirect(307, '/api/user');
});

app.get('/api/user', (req,res,next) => {
   // Your business logic...
});

解决方案2

app.get('/user', (req, res, next) => {
   req.url = '/api/user';
   next();
});

app.get('/api/user', (req,res,next) => {
   // Your business logic...
});

答案 2 :(得分:0)

您可以考虑在两条不同的路由中注册相同的路由器代码。

const apiRouter = express.Router()
apiRouter.post('/', function (req, res, next) { ... }

app.use('/user', apiRouter)
app.use('/api/user', apiRouter)

如果您的路由方法使用了路由参数(您称它们为“令牌”),则它们应该可以正常工作。

您没有问这个。但是不要在路由中添加秘密,因为URL会记录到Web服务器日志中。例如,https://bank.example.com/12345/password/是个坏主意。将用户的机密放到POST正文参数中。 (代理服务器与您自己的服务器一样保存日志。)如果秘密是难以猜测的一次性令牌,则无关紧要。

但是,最好确定哪条路线是“官方”路线,然后弃用另一条路线,然后从已弃用的路线到正式路线使用308 permanent redirect。例如,

app.use('/user', (req,res,next) => {res.redirect(308,'/api/user})