如果用户在/user
上请求获取请求,则它应该像对静态文件一样执行此/api/user
的路由。
用户请求https://example.com/user
,然后应在下面的代码中执行
app.get('/api/user', (req,res,next) => {
Do Something
})
答案 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})