如何正确设置路线?

时间:2017-05-13 13:51:57

标签: node.js mongodb express passport.js

以下是示例代码:

    var x = require('./folder/usefile');

    var Auth = passport.authenticate('jwt', { session: false });

    module.exports = function(app){
    console.log('inside function(app)'); //line 1 executed!

    var player = express.Router();
    var finalRun = express.Router();

    app.use('/api/usefile',player);

    player.get('/', Auth, x.login);

    player.post('/post', Auth, function(req, res){
      x.register});

    app.use('/api',finalRun);
console.log('inside api'); //line 2 is executed!
    }

usefile我的登录功能存在,导出。

我在这里使用护照,其功能存在于单独的文件中,此处仅用于身份验证。

当我跑http://localhost:8080/api/usefile/--->对于get方法,它显示404. post方法相同。

控制台是打印第1行和第2行(在评论中已提到),流程是第1行,第2行。

任何人都可以帮我找到我在这里犯的错误吗?

1 个答案:

答案 0 :(得分:2)

您已创建了两个路由器实例playerfinalRun。有两个主要问题:

  1. 此行player.use('/usefile',player)应为app.use('/usefile',player)express.Router().use用于为注册到路由器的所有路由添加中间件(在本例中为player)。例如,如果您希望使用Passport的Auth中间件用于每个player路由,则可以将其声明为player.use(Auth)
  2. 您没有声明finalRun路由器的任何路由处理。因此,在这种情况下,使用player注册的路由处理程序将处理host/usefile,而finalRun将处理任何host/api
  3. 如果您希望注册player的处理程序处理/api/usefile,使用单个路由器实例会更简单。

    /api/usefile路径注册到player路由器,如:

    app.use('/api/usefile', player);
    

    Docs for app.use

    Docs for router.use