0.4.1 • Published 6 years ago

@colucom/osseus-router v0.4.1

Weekly downloads
1
License
MIT
Repository
github
Last release
6 years ago

JavaScript Style Guide

Osseus Router

JSON Routes (for osseus) based osseus module to work with osseus-server

Install

$ npm install @colucom/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)

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.