0
ramlファイルに基づいて要求を検証するためにミドルウェアを使用したいと考えています。Expressjs - ミドルウェアをミドルウェア内で使用する
// 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_middleware
使用osprey-method-handler
:私のコードがどのように見えるか
。 私はあなたがreq
、res
とnext
があなたのcustom_middleware
関数に送信されるように部分関数を使用する必要があなたの例のために成功
感謝を。私はロダッシュが関数型プログラミングには優れていることを知っているので、試してみましょう。 – jy95
ちょっと質問、osprey-method-handlerはそのコードのnext()コールの中で使用します。したがって、custom_middlewareがnext()を実行する必要はありませんが(osprey-method-handlerに依存していれば)どうなりますか? – jy95
ちょうどテストしました...、osprey-method-handlerの結果を受け取っていないと、次のミドルウェア(ルータ)は動作しません.... – jy95