Provider Specification - Routes and Controllers

Provider-specific routes

In addition to routes defined by output-plugins, a provider may extend the Koop API by defining their ownvroutes and associated controllers. These routes are defined in a file that is referenced in the registration object. This file should export an array of route definition objects. Each object must have:

property name type description example
path string An Express.js style route that includes optional parameters /provider-name/:id/metadata
methods string[] HTTP methods that should be handled at this route [get, post]
handler string Name of the controller function in controller file that should handle requests at this route metadataHandler
module.exports = [
{
    path: `/provider-name/:id/metadata`,
    methods: ['get'],
    handler: 'metadataHandler'
  }
]
Figure 1. Contents of a routes.js file that defines a single provider-specific route.

Controllers

Each route defintion has a handler property that should name a method to be used for route handling. You can define these methods on a Controller class in a file that must be properly referenced in the registration object.

```js function Controller (model) { this.model = model }

Controller.prototype.test = function (req, res) { res.status(200).json({ version: ‘1.0.0’ }) }

module.exports = Controller

Figure 2. Contents of a controllers.js file that defines a `Controller` class with methods that act as handler for provider-specific routes.


Improve this page