sfcode
An Online Competing and Development Environment
|
Connect is an extensible HTTP server framework for node using "plugins" known as middleware.
Connect is a simple framework to glue together various "middleware" to handle requests.
The main component is a Connect "app". This will store all the middleware added and is, itself, a function.
The core of Connect is "using" middleware. Middleware are added as a "stack" where incoming requests will execute each middleware one-by-one until a middleware does not call next()
within it.
The .use()
method also takes an optional path string that is matched against the beginning of the incoming request URL. This allows for basic routing.
There are special cases of "error-handling" middleware. There are middleware where the function takes exactly 4 arguments. When a middleware passes an error to next
, the app will proceed to look for the error middleware that was declared after that middleware and invoke it, skipping any error middleware above that middleware and any non-error middleware below.
The last step is to actually use the Connect app in a server. The .listen()
method is a convenience to start a HTTP server (and is identical to the http.Server
's listen
method in the version of Node.js you are running).
The app itself is really just a function with three arguments, so it can also be handed to .createServer()
in Node.js.
These middleware and libraries are officially supported by the Connect/Express team:
bodyParser
, json
, and urlencoded
. You may also be interested in:
compress
timeout
cookieParser
cookieSession
csrf
error-handler
session
method-override
logger
response-time
favicon
directory
static
vhost
Most of these are exact ports of their Connect 2.x equivalents. The primary exception is cookie-session
.
Some middleware previously included with Connect are no longer supported by the Connect/Express team, are replaced by an alternative module, or should be superseded by a better module. Use one of these alternatives instead:
cookieParser
limit
multipart
query
staticCache
Checkout http-framework for many other compatible middleware!
The Connect API is very minimalist, enough to create an app and add a chain of middleware.
When the connect
module is required, a function is returned that will construct a new app when called.
The app
itself is a function. This is just an alias to app.handle
.
Calling the function will run the middleware stack against the given Node.js http request (req
) and response (res
) objects. An optional function out
can be provided that will be called if the request (or error) was not handled by the middleware stack.
Start the app listening for requests. This method will internally create a Node.js HTTP server and call .listen()
on it.
This is an alias to the server.listen()
method in the version of Node.js running, so consult the Node.js documentation for all the different variations. The most common signature is app.listen(port)
.
Use a function on the app, where the function represents a middleware. The function will be invoked for every request in the order that app.use
is called. The function is called with three arguments:
In addition to a plan function, the fn
argument can also be a Node.js HTTP server instance or another Connect app instance.
Use a function on the app, where the function represents a middleware. The function will be invoked for every request in which the URL (req.url
property) starts with the given route
string in the order that app.use
is called. The function is called with three arguments:
In addition to a plan function, the fn
argument can also be a Node.js HTTP server instance or another Connect app instance.
The route
is always terminated at a path separator (/
) or a dot (.
) character. This means the given routes /foo/
and /foo
are the same and both will match requests with the URLs /foo
, /foo/
, /foo/bar
, and /foo.bar
, but not match a request with the URL /foobar
.
The route
is matched in a case-insensitive manor.
In order to make middleware easier to write to be agnostic of the route
, when the fn
is invoked, the req.url
will be altered to remove the route
part (and the original will be available as req.originalUrl
). For example, if fn
is used at the route /foo
, the request for /foo/bar
will invoke fn
with ‘req.url === ’/bar' and
req.originalUrl === '/foo/bar'`.
The Connect project would not be the same without all the people involved.
The original author of Connect is TJ Holowaychuk
The current lead maintainer is Douglas Christopher Wilson
< 1.x
- node 0.2
1.x
- node 0.4
< 2.8
- node 0.6
>= 2.8 < 3
- node 0.8
>= 3
- node 0.10
, 0.12
, 4.x
, 5.x
, 6.x
, 7.x
, 8.x
, 9.x
, 10.x
, 11.x
, 12.x
; io.js 1.x
, 2.x
, 3.x
[MIT](LICENSE)