Sails.js:删除特定路由的bodyparser中间件

时间:2017-06-30 05:02:43

标签: node.js sails.js body-parser

有没有办法删除特定路由的中间件

目前所有中间件都列在http.js文件

[
      'startRequestTimer',
      'cookieParser',
      'session',
      'bodyParser',
      'passportInit',
      'passportSession',
      'myRequestLogger',
      'handleBodyParserError',
      'compress',
      'methodOverride',
      'poweredBy',
      'router',
      'www',
      'favicon',
      '404',
      '500'
  ]

我想删除特定路由的bodyParser中间件

是否可以使用sails.js ??

1 个答案:

答案 0 :(得分:3)

没有以声明方式执行此操作的机制,但是,您可以在每个路由的基础上禁用中间件。您可以通过覆盖中间件并检查自定义代码中的路由URL来实现,类似于using a separate body parser for XML requests的解决方案。例如:

// In config/http.js `middleware` property

bodyParser: (function() {
  // Initialize a skipper instance with the default options.
  var skipper = require('skipper')();
  // Create and return the middleware function.
  return function(req, res, next) {
    // If we see the route we want skipped, just continue.
    if (req.url === '/dont-parse-me') {
      return next();
    }
    // Otherwise use Skipper to parse the body.
    return skipper(req, res, next);
  };
})()

这是基本想法。它当然可以做得更优雅;例如,如果您想要跳过多个路由,可以将列表保存在单独的文件中,并根据该列表检查当前URL。