Node.js 将中间件放在节点js+;快车

Node.js 将中间件放在节点js+;快车,node.js,rest,express,Node.js,Rest,Express,我在带有express的node js中为rest api提供了不同的文件 app.js 路由器.js controller.js app.js var routes = require('./source/router'); ....... app.use('/application', routes); 路由器.js var express = require('express'); var controller= require('./controller'); var router =

我在带有express的node js中为rest api提供了不同的文件

  • app.js
  • 路由器.js
  • controller.js
  • app.js

    var routes = require('./source/router');
    .......
    app.use('/application', routes);
    
    路由器.js

    var express = require('express');
    var controller= require('./controller');
    var router = express.Router();
    router.route('/register').post(controller.register);
    
    controller.js

    module.exports = {
       register : function(req,res){
       }
    }
    

    它工作得很好,但我只想在register的端点中放置一个中间件。我尝试过不同的方法,但都不管用。我想保留此结构。

    想要保持相同的结构会限制您的选择,但请尝试这样做:

    function customMiddleware(req, res, next) {
      //your code
        next();
    }
    
    router.route('/register').post(customMiddleware, controller.registerHero);
    

    如果(err)抛出err,为什么您希望
    if(err)抛出err要做什么?@jfriend00你是说我期望它做什么?好吧,它不会做任何有用的事情。它可能应该调用
    next(err)
    。在路由处理程序的中间不只是随机地>代码>投掷< /代码>。很多人似乎认为,
    if(err)抛出err
    在服务器开发中非常有用。除非代码是同步的,并且您已经专门定义了一个异常处理程序来处理该异常,否则它几乎永远都不是正确的。请您将答案标记为正确的@avedemaroukian,然后我把它放在这里!