LoopBack:如何定义中间件拦截REST API调用?

时间:2015-07-18 18:27:48

标签: middleware loopbackjs strongloop

如果我在 server / middleware.json 中注册中间件,则会针对每个请求执行此中间件,无论其类型如何。但是对于授权检查,我需要执行 执行 API路径的调用。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

server/boot内创建一个文件,就像我在浏览器中预览电子邮件模板以进行开发一样。您只需像在快递应用程序中一样添加快速路线:

// from the loopback custom express route docs:
//
// module.exports = function(app) {
//   var router = app.loopback.Router();
//   router.get('/ping', function(req, res) {
//     res.send('pong');
//   });
//   app.use(router);
// }
var fs                 = require('fs');
var Mustache           = require('mustache');
var path               = require('path');

module.exports = function(app) {
  app.get('/emails/:template', function(req, res) {

    var data = {
      // data for template render
    };

    var template = fs.readFileSync(path.resolve(__dirname, '../../client/views/emails/' + req.params.template), 'utf-8');
    var html = Mustache.render(template, data);

    res.send(html);

  });

}

http://localhost:3000/ping应输出“pong”。

请参阅http://docs.strongloop.com/display/public/LB/Add+a+custom+Express+route

因此,如果您需要触发所有API事件,而不是上面的显式路径,您可以尝试:

app.all('/api/*', requireAuthentication);

匹配/ api前缀以运行该中间件。

请参阅:http://expressjs.com/api.html#app.all