Bring annotations to your favorite routing framework
$ npm install --save annotation-router
given this file controller.js
/*
@routePrefix('/api')
*/
module.exports = {
// @httpGet()
// @route('/collection')
collection: function(){
},
// @route('/collection/{id}')
getIndex: function(){
},
// @route('/collection')
postItem: function(){
},
> };
You can then simply retrieve each single route by doing so:
var annotationRouter = require('annotation-router');
annotationRouter('controller.js', function(err, route){
console.log(route);
/*
{
url: '/api/collection',
method: 'GET',
action: /* the action function */
},
...
*/
}, function(err){
// all routes have been parsed
});
Required
Type: string
, array
paths of the all the controllers in the solution that will be checked for routing annotations
check globby for details
Type: string
Type: string
Possible Values: GET
, POST
, PUT
, DELETE
, HEAD
Type: Function
The action function associated with the route
All the functions inside the module will prepend the
prefixUrl
to theirs urls
The function following this annotation will be called when someone request the
url
Set the method of the route
If none of the available method definition annotation could be found, the route's method will be guessed from the name of the function
Vatican is another library which use annotation to define routes. Although it's a standalone library which means you can't use your favorite routing library.
If you ever work with Microsoft's MVC library, you surely noticed that we are trying to reproduce the same behavior.
MIT © Thomas Sileghem