lime-router
About
This is a simple router for the limerun
Project.
It routes HTTP and COAP requests, with simple uri templates and parameter/query string parsing.
NPM Package
This repository contains a Node Package Manager (NPM) package with a single factory constructor for the routing engine. It is intended for use in Node applications that either run on an web server that conforms to the OWIN-JS specification or run using the OWIN-JS/owin-js HTTP or COAP bridges for use with node http or node-coap respectively.
Usage
Installation:
npm install lime-router
Hello World (using RazorView):
// Dependenciesconst lime =router =http = ;// Create Factoriesvar app = ;var route = ;// Appapp;route;http;
Methods
route.get
: MatchGET
requestsroute.post
: MatchPOST
requestsroute.put
: MatchPUT
requestsroute.head
: MatchHEAD
requestsroute.del
: MatchDELETE
requestsroute.options
: MatchOPTIONS
requestsroute.all
: Match all above request methods.route.debugget
: MatchGET
forscheme='debug'
requests
API
If you want to grab a part of the path you can use capture groups in the pattern:
route
Query paramaters in the url are also added to owin.Params
:
route;
The capture patterns matches until the next /
or character present after the group
route;
Optional patterns are supported by adding a ?
at the end
route;
If you want to just match everything you can use a wildcard *
which works like posix wildcards
route;
If the standard capture groups aren't expressive enough for you can specify an optional inline regex
route;
You can also use regular expressions and the related capture groups instead:
route;
Error handling
By default lime-router will simply move to next lime middleware function if no route matched. The router is a Promise/A compatible async function that respects error bubbling, but has no specific handling built in.
You can provide a catch-all to a given route that is called if no route was matched:
route.get(function() {
// called if no other get route matched
this.response.writeHead(404);
this.response.end('no GET handler found');
});
Credits
This router was ported from gett/router which was developed under MIT license by Mathias Buus Madsen and Ian Jorgensen.
It has been developed to be a core component of the limerun OWIN-JS ecosystem.