connect-cleaner
THIS PLUGIN IS BROKEN, REWRITE IS COMING
Simple url sanitizer for connect and express.
Redirects trailing slash urls, normalizes letter case differences and cleans garbage from your URLs.
Inspired by connect-slashes.
Installation
$ npm install connect-cleaner
Usage
var connect = ;var cleaner = ;var config = ; // ideally, put cleaner as earlier as possible ;
By default, cleaner
responses with "fast 400"* on requests like //?/?///
. Optionaly clear
takes one argument which can be an Object
(options) or Number
(redirect code).
* By "fast 400" I mean that cleaner responses with unstyled 400 without body as soon as possible
Options
add <false>
- determines ifcleaner
should add trailing slash. Iftrue
setsclean
tofalse
.clean <true>
- determines ifcleaner
should clean trailing slash(es). Can be overrided byadd
andsanitize
options.code <301>
- determines redirect code.normilize <false>
- determines ifcleaner
should normilize differences in letter cases inpathname
. It's important to note thatcleaner
only fixes letter casing onpathname
-querystring
not affected.sanitize <false>
- determines ifclaener
should clean (sanitize) garbage in url (includes[/?&=]
, also setsclean
tofalse
).
Post-initialization mutablity
var instance = ; // We need access to middleware for later configuringapp; // Later...instance;// orinsatnce; // Also we have more generic acces to `_options` objectinstance; // => 302// orinstance;/* =>{ add: true, clean: false, code: 302, sanitize: true, normalize: false}*/
Examples
Options | Request | Response | Code |
---|---|---|---|
(default) | ///?/?/? |
- | 400 |
(default) | /Users//?foo=Bar&age=21& |
/Users?foo=Bar&age=21& |
301 |
code: 302 |
/Users//?foo=Bar&age=21& |
/Users?foo=Bar&age=21& |
302 |
normalize, code: 302 |
/Users//?foo=Bar&age=21& |
/users?foo=Bar&age=21& |
302 |
sanitize, code: 302 |
/Users//?foo=Bar&age=21& |
/Users?foo=Bar&age=21 |
302 |
normalize , sanitize, code: 302 |
/Users//?foo=Bar&age=21& |
/users?foo=Bar&age=21 |
302 |
(default) | /users?foo=Bar&age=21 |
- | Pass thrue, url is fine |
add |
/users?foo=Bar&age=21 |
/users/?foo=Bar&age=21 |
301 |
TODO
- [WIP] add option to pass Error's through connect stack (next(err))
- [WIP] performance optimizition
- [WIP] refactoring
- write benchamrk
License
MIT