我可以在Express中覆盖路由吗?

时间:2016-10-26 15:48:01

标签: node.js express swagger-ui

如果我这样做:

app.get('/test', (req, res) => {
 res.send('First');
});

app.get('/test', (req, res) => {
 res.send('Second');
});

第一个调用是有效的,第二个get调用不会覆盖第一个调用。有没有好办法改变它?

基本上我正在开发一个可以访问多个API的Swagger应用程序。我从https://github.com/thanhson1085/swagger-combined分叉。该应用知道API A是否会点击/user,它会将来自/user的任何来电代理到相应的地方。现在,该应用程序会在您加载的API中列出所有API调用。这意味着如果API A& API B具有相同的/user端点,我只会代理在我的应用中注册端点的第一个API。

1 个答案:

答案 0 :(得分:4)

Express不允许覆盖路线。但是你应该能够使用一个并决定在哪里代理这些电话。

app.get('/test', (req, res) => {
  if(req.isFirst()){
    res.send('First');
  }
  if(req.isSecond()){
    res.send('Second');
  }
});

最好将这些api放在单独的端点中,例如/api1/user/api2/user/

您基本上可以将Express Router传递到另一台Express Router。

let api1Router = express.Router()
rootRouter.use('/api1', api1Router)

希望有所帮助。