1.1.2 • Published 8 years ago

conglomerate-router v1.1.2

Weekly downloads
2
License
BSD-3-Clause
Repository
github
Last release
8 years ago

NPM version Build Status

conglomerate-router

hapijs/call for browsers. Supports all modern browsers, tested on IE 9+, Chrome 16+, FireFox 5+, Safari 6+, Opera 12+.

Path matching order

The router iterates through the routing table and executes the first (and only the first) matching route. Route matching is done based on the combination of the request path and the HTTP verb (e.g. 'GET, 'POST'). The query is excluded from the routing logic. Requests are matched in a deterministic order where the order in which routes are added does not matter.

Routes are matched based on the specificity of the route which is evaluated at each segment of the path. Each path is split into its segment (the parts separated by '/'). The segments are compared to the routing table one at a time and are matched against the most specific path until a match is found. If no match is found, the next match is tried.

When matching routes, string literals (no path parameter) have the highest priority, followed by mixed parameters ('/a{p}b'), parameters ('/{p}'), and then wildcard (/{p*}).

Note that mixed parameters are slower to compare as they cannot be hashed and require an array iteration over all the regular expressions representing the various mixed parameter at each routing table node.

Catch all route

If the application needs to override the default Not Found (404) error response, it can add a catch-all route {method: '*', path: '/{p*}'} for a specific method or all methods. Only one catch-all route can be defined per router.

Thanks

Thanks to Eran Hammer and @hapijs community for the quality engineering behind hapi.

Thanks to Sauce Labs for providing the infrastructure that allows us to run our build in real browsers.

License

conglomerate-router is released under the terms of the BSD-3-Clause license.