Osseus Router
JSON Routes (for osseus) based osseus module to work with osseus-server
Install
$ npm install osseus-router
Usage
Configuration
Mandatory:
-
OSSEUS_ROUTER_DEPENDENCIES
- Your application must use osseus-server
- See osseus dependencies explanation here
Optional:
-
OSSEUS_ROUTER_ROUTES_PATH
- the path to your routes folder
- default is
./routes
-
OSSEUS_ROUTER_CONTROLLERS_PATH
- the path to your controllers folder
- default is
./contollers
-
OSSEUS_ROUTER_POLICY_PATH
- the path to your policy (middlewares) folder
- default is
./policy
-
OSSEUS_ROUTER_URL_PREFIX
- global prefix path for all routes
-
OSSEUS_ROUTER_CONTROLLER_NAME_NO_UPPERCASE
- set to
true
in order for contorller names not to begin with uppercase (which is the default)
- set to
Example
/routes/examples.json
:
{
"/example": {
"GET": {
"policy": "global:firstPolicy",
"route": "exampleGET"
},
"POST": {
"policy": [
"global:firstPolicy",
"global:secondPolicy"
],
"route": "./controllers/AnotherController:examplePOST"
}
}
}
Note
By default all routes in /routes/example.json
are assumed to be in /controllers/ExamplesController.js
but in case you want to use a route from another controller need to specify its location
/policy/global.js
:
module.exports = (osseus) => {
return {
firstPolicy: (req, res, next) => {
req.policies = req.policies || []
req.policies.push('firstPolicy')
next()
},
secondPolicy: (req, res, next) => {
req.policies = req.policies || []
req.policies.push('secondPolicy')
next()
}
}
}
/controllers/ExamplesController.js
:
module.exports = (osseus) => {
return {
examplePOST: (req, res, next) => {
res.send({called: 'examplePOST', policies: req.policies})
}
}
}
/controllers/AnotherController.js
:
module.exports = (osseus) => {
return {
examplePOST: (req, res, next) => {
res.send({called: 'examplePOST', policies: req.policies})
}
}
}
Running:
$ node index.js --OSSEUS_SERVER_PORT 8080
Will start your application and listen on 8080.
Now, let's send some test requests and see what we get:
$ curl 0:3000/example
will result in:
$ {"called":"exampleGET","policies":["firstPolicy"]}
and:
$ curl -XPOST 0:3000/example
will result in:
$ {"called":"examplePOST","policies":["firstPolicy","secondPolicy"]}
More detailed examples can be found here
Contributing
Please see contributing guidelines.
License
Code released under the MIT License.