This package provides generic routing functionality. It is optimized for HTTP requests, but it can be used for other tasks as well.
Main class of the package is Router
.
Static singleton initiation method.
Returns link to the router object.
If you want to use this router for something other than HTTP routes, you may need to change separator from "/" to something else like " "
Returns link to object itself
Registers path. Arguments:
-
pathPattern
Pattern with wildcards defined as {param_name} or {#param_name} (for integers) -
methods
List of methods for the path (one path can be registered multiple times with different methods) -
routeObject
Data to be returned as property "route_object" by method "route". It can be callback, object, string or however else you want to identify the route
Returns link to object itself
Registers "route_object" for the default path. Arguments:
-
routeObject
Data to be returned as property "route_object" by method "route". It can be callback, object, string or however else you want to identify the route
Returns link to object itself
Performs routing. Arguments:
-
path
Path (like /account/123/inbox) -
method
HTTP method
Returns object:
-
path
- value provided aspath
argument -
method
- value provided asmethod
argument (transformed to uppercase) -
params
- parameters extracted from the path -
route_object
- Custom data registered via methodregister
-
is_default
- Shows if default route was used
Example:
{
"path": "/users/125/inbox",
"method": "GET",
"params": {"id": 125, "action": "inbox"},
"route_object": "Custom data registered via method register",
"is_default": false
}
const { OrangeDragonflyRouter } = require('orange-dragonfly-router')
OrangeDragonflyRouter.init()
.register('/users/{#id}', 'GET', () => console.log('user route'))
.register('/users/{#id}/{action}', 'GET', () => console.log('user action route'))
.register('/authorization', 'GET', () => console.log('authorization route'))
.registerDefault(() => console.log('default route'))
function callbackForHTTPRequests(path, method) {
const route = Router.init().route(path, method);
route.route_object();
console.log(route.params);
}
callbackForHTTPRequests('/users/125', 'GET');
/*
Expected output:
"user route"
{"id": 125}
*/
See tests for more examples