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"
}
}
]
}