.routes
routes
機能により、カスタムフックはロード時に新しいルートをSailsアプリケーションに簡単にバインドできます。実装する場合は、routes
はbefore
キー、after
キー、またはその両方をキーとするオブジェクトである必要があります。これらのキーの値は、今度はキーがルートアドレスで、値が標準的な(req, res, next)
パラメータを持つルート処理関数であるオブジェクトである必要があります。before
オブジェクトで指定されたルートは、カスタムユーザールート(sails.config.routesで定義されている)とブループリントルートの前にバインドされます。逆に、after
オブジェクトで指定されたルートは、カスタムルートとブループリントルートの後にバインドされます。例として、次のcount-requests
フックを考えてみましょう。
module.exports = function (sails) {
// Declare a var that will act as a reference to this hook.
var hook;
return {
initialize: function(cb) {
// Assign this hook object to the `hook` var.
// This allows us to add/modify values that users of the hook can retrieve.
hook = this;
// Initialize a couple of values on the hook.
hook.numRequestsSeen = 0;
hook.numUnhandledRequestsSeen = 0;
// Signal that initialization of this hook is complete
// by calling the callback.
return cb();
},
routes: {
before: {
'GET /*': function (req, res, next) {
hook.numRequestsSeen++;
return next();
}
},
after: {
'GET /*': function (req, res, next) {
hook.numUnhandledRequestsSeen++;
return next();
}
}
}
};
};
このフックは、before
オブジェクトで提供された関数を使用してすべてのリクエストを処理し、そのnumRequestsSeen
変数をインクリメントします。また、after
オブジェクトで提供された関数を使用して、未処理のリクエスト(カスタムルート設定またはブループリントを介してアプリケーションでバインドされていないルート)を処理します。
フックで設定された2つの変数は、
sails.hooks["count-requests"].numRequestsSeen
とsails.hooks["count-requests"].numUnhandledRequestsSeen
として、Sailsアプリケーションの他のモジュールで使用できます。