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 configuration shows the order in which the scripts would be executed:
{
"filters" : [
{
"onRequest" : {
"type" : "text/javascript",
"source" : "require('router-authz').testAccess()"
}
},
{
"pattern" : "^managed/realm-name_user",
"methods" : [
"read"
],
"onRequest" : {
"type" : "text/javascript",
"source" : "console.log('requestFilter 1');"
}
},
{
"pattern" : "^managed/realm-name_user",
"methods" : [
"read"
],
"onResponse" : {
"type" : "text/javascript",
"source" : "console.log('responseFilter 1');"
}
},
{
"pattern" : "^managed/realm-name_user",
"methods" : [
"read"
],
"onRequest" : {
"type" : "text/javascript",
"source" : "console.log('requestFilter 2');"
}
},
{
"pattern" : "^managed/realm-name_user",
"methods" : [
"read"
],
"onResponse" : {
"type" : "text/javascript",
"source" : "console.log('responseFilter 2');"
}
}
]
}
This configuration would produce a log as follows:
requestFilter 1
requestFilter 2
responseFilter 2
responseFilter 1
Example Filter Configuration
This example executes a script after a managed user object is created or updated:
{
"filters": [
{
"pattern": "^managed/realm-name_user",
"methods": [
"create",
"update"
],
"onResponse": {
"type": "text/javascript",
"source": "inlineScript"
}
}
]
}