Connect 2.0
Connect 2.0 is here with new core middleware, miscellaneous improvements, and some new docs.
var app = connect()
.use(connect.logger('dev'))
.use(connect.static('public'))
.use(function(req, res){
res.end('hello world\n');
})
app.listen(3000);
HTTP and HTTPS
Previously connect.Server inherited from Node’s core net.Server, this made it difficult to provide both HTTP and HTTPS for your application. The result of connect() (formerly connect.createServer()) is now simply a JavaScript Function. This means that you may omit the call to app.listen(), and simply pass app to a Node net.Server as shown here:
var connect = require('connect')
, http = require('http')
, https = require('https');
var app = connect()
.use(connect.logger('dev'))
.use(connect.static('public'))
.use(function(req, res){
res.end('hello world\n');
})
http.createServer(app).listen(80);
https.createServer(tlsOptions, app).listen(443);
Body parsers
The bodyParser() middleware is now nothing but a short-hand for adding the json(), multipart(), and urlencoded() middleware. Each of these populate req.body with an object containing the parsed values, multipart() provides req.body and req.files for uploads.
Core compression
As of Node 0.6.0 fast, native compression capabilities are available, so now we have the compress() middleware supporting deflate and gzip.
Cookie parser
The cookieParser() middleware now supports signed cookies, and accepts a secret. This replaces the need to pass session({ secret: string }) to the session() middleware. Signed cookies are available via req.signedCookies, and unsigned as req.cookies.
Error delegation
Previously a few of the core middleware would respond to error situations directly, these have been changed to simply next(err)-them along. This change allows you to specify customized behaviour by adding an error-handling middleware:
app.use(function(err, req, res, next){
if (4 == err.status / 100) {
// render a client-error page
} else {
// render a server-error page
}
});
Session
As mentioned session() no longer requires a secret. The cookie .maxAge has been defaulted to null, meaning that it will be a browser-session cookie, expiring once the visitor closes their browser.
Third-party middleware
Third-party middleware should remain perfectly functional. This release of Connect is not compatible with Express 2.x, Express 3.0 is coming soon.
Changelog
The following significant changes were made, as well as several others that do not impact public API, such as a full rewrite of the tests using Mocha.
- Added
cookieSession()middleware for cookie-only sessions - Added
compress()middleware for gzip / deflate support - Added
session()“proxy” setting to trustX-Forwarded-Proto - Added
json()middleware to parse “application/json” - Added
urlencoded()middleware to parse “application/x-www-form-urlencoded” - Added
multipart()middleware to parse “multipart/form-data” - Added
cookieParser(secret)support so anything using this middleware may access signed cookies - Added signed cookie support to
cookieParser() - Added support for JSON-serialized cookies to
cookieParser() - Added
err.statussupport in Connect’s default end-point - Added X-Cache MISS / HIT to
staticCache() - Added public
res.headerSentchecking nodesres._headerSentuntil node does - Changed
basicAuth()req.remoteUser to req.user - Changed: default
session()to a browser-session cookie. Closes #475 - Changed: no longer lowercase cookie names
- Changed
bodyParser()to usejson(),urlencoded(), andmultipart() - Changed:
errorHandler()is now a development-only middleware - Changed middleware to
next()errors when possible so applications can unify logging / handling - Removed
http[s].Serverinheritance, now just a function, making it easy to have an app providing both http and https - Removed
.createServer()(useconnect()) - Removed
secretoption fromsession(), usecookieParser(secret) - Removed
connect.session.ignorearray support - Removed
router()middleware. Closes #262 - Fixed: set-cookie only once for browser-session cookies
- Fixed FQDN support. dont add leading “/”
- Fixed 404 XSS attack vector. Closes #473
- Fixed HEAD support for 404s and 500s generated by Connect’s end-point
