Connect-Url-Pipe
==================
Middleware for connect or express that allows for dynamic routing.
Useful if in your app, /book/author
and author/book
are equivalent, or if you intend to have something like :string/toLowerCase/replace:a:b/append:!/
Usage
install:
npm install connect-url-pipe
var app = var urlPipe = ; var dynamicRoutes = { reqcurrentString = reqcurrentString; ; } { var args = requrlPipeOptions$options; reqcurrentString = reqcurrentString; ; } { var args = requrlPipeOptions$options; reqcurrentString = reqcurrentString+args0; ; }; var dynamicRouter = ; app //http://localhost:3000/ABCDE/append:! -> ABCDE!//http://localhost:3000/ABCDE/append:!/toLowerCase -> abcde!//http://localhost:3000/ABCDE/replace:a:b/toLowerCase -> abcde//http://localhost:3000/ABCDE/toLowerCase/replace:a:b -> bbcde
Connect-Url-Pipe adds an array-like object to req called urlPipeOptions
.
For the dynamicRoutes
above, req.urlPipeOptions
will be:
'toLowerCase':
Only the function names are enumerable, the numeric indices, length
,$current
, $errors
and $index
are not.
$current
gives you the name of the current route$index
gives you the index of the current route (useful if you want to know if it's loaded before or after another module)$options
gives you the URL options provided.$errors
is an array of errors (if any)
Syntax
The default syntax is:
modulename[:arg[:arg]]/modulename...
But you can modify it by setting them in the constructor:
var dynamicRouter = ;
options
is the name of the param to use. It depends on how you set up your url; since in our example, the url is /:string/:options(*)?
, we use options
.
If a module that doesn't exist is called, the process will be not be interrupted, but an array of errors will be passed to the next middleware.
app
Tests
No unit tests, but you can try the software by:
cd test
npm install express
node index.js
And going to http://localhost:3000
License
MIT