Script Execution Sequence
All onRequest
and onResponse
scripts are executed in sequence. First, the onRequest
scripts are executed from the top down, then the onResponse
scripts are executed from the bottom up.
client -> filter 1 onRequest -> filter 2 onRequest -> resource client <- filter 1 onResponse <- filter 2 onResponse <- resource
The following sample router.json
file shows the order in which the scripts would be executed:
{ "filters" : [ { "onRequest" : { "type" : "text/javascript", "source" : "require('router-authz').testAccess()" } }, { "pattern" : "^managed/user", "methods" : [ "read" ], "onRequest" : { "type" : "text/javascript", "source" : "console.log('requestFilter 1');" } }, { "pattern" : "^managed/user", "methods" : [ "read" ], "onResponse" : { "type" : "text/javascript", "source" : "console.log('responseFilter 1');" } }, { "pattern" : "^managed/user", "methods" : [ "read" ], "onRequest" : { "type" : "text/javascript", "source" : "console.log('requestFilter 2');" } }, { "pattern" : "^managed/user", "methods" : [ "read" ], "onResponse" : { "type" : "text/javascript", "source" : "console.log('responseFilter 2');" } } ] }
Will produce a log like:
requestFilter 1 requestFilter 2 responseFilter 2 responseFilter 1
The following example executes a script after a managed user object is created or updated:
{ "filters": [ { "pattern": "^managed/user", "methods": [ "create", "update" ], "onResponse": { "type": "text/javascript", "file": "scripts/afterUpdateUser.js" } } ] }