繁体   English   中英

Expressjs-在中间件内部使用中间件

[英]Expressjs - Use middleware inside middleware

我想使用中间件来验证基于raml文件的请求。
我的代码如下所示:

// require   
let resources = require('osprey-resources');
let errorHandler = require('request-error-handler');
let handler = require('osprey-method-handler');

// create express instance
let app = express();

// ramlObj obtained by raml2obj.parse(myPath).then()
let router = resources(ramlObj.resources,
    function (method, path) {

        // get the method type : get/post/etc
        let methodType = method.method.toUpperCase();

        // provide a function (controller) for this path
        return controllers.provideController(methodType, path);
    }
);

// osprey-router middelware , created by osprey-resources
app.use('/v1', router);

// error Handler middelware
app.use(errorHandler(responder, DEFAULT_LANGUAGE, customMessages));

// What I want:

// routes middelware
app.use('/v1', custom_middleware(method, methodType, path), router);

其中custom_middlewarecustom_middleware使用osprey-method-handler以及我提供给他的所有参数。 我尝试连接失败

对于您的示例,您需要使用部分函数来允许将reqresnext发送到您的custom_middleware函数。

使用lodash的示例:

// Route
app.use('/v1', _.partialRight(custom_middleware, method, methodType, path), router);

// Function
custom_middleware(req, res, next, method, methodType, path) {
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM