The middleware compiler provides a mechanism to run any number of middleware prior to invoking a webtask.
wt-node-dependenciesmetadata property to the stringified JSON of an object having a
@webtask/middleware-compilerproperty whose value is the latest version of this module.
wt-compilermetadata property on your webtask to
Optionally, set the
wt-middlewaremetadata property to a comma-separated list of middleware references. Middleware references can be any combination of:
module_name- The name of an npm module, in which case the module's default export is used. This would be equivalent to
module_name/name_of_export_function- The name of an npm module with the name of the desired export. This wouldbe equivalent to
http(s)://url.of/a/file/exporting/a/middleware.js- A publicly accessible url from which the middleware's code will be downloaded and evaluated. The code must export a suitable middleware factory function as the default export.
Optionally, set the
wt-debugmetadata property to a comma-separated list of debug references that contains
wt-middleware. This will result in additional debug information being sent to real-time logs.
How it works
A middleware is a
Function exported by a node module that returns another
Function having the signature
function(req, res, next), where:
reqis the instance of
http.IncomingRequestfor the current request. It has a
req.webtaskContextis a typical webtask context object that is augmented with a
compilerobject is exposed so that a middleware can be implemented that supports custom programming models. The
compilerproperty is an object that has
nodejsCompileris the node.js compiler function provided to webtask compilers
scriptis the underling webtask's code
resis the instance of
http.ServerResponsefor the current request
nextis a function with the signature
function next(error). A middleware function may be designed to complete the response, in which case it can omit calling
next. A middleware may also implement authentication logic, such as the authentication middleware. In this case, the middleware might invoke
Error. If the error has a
statusCodeproperty, this will be used as the response status code. Otherwise, to allow control to go to the next middleware, or to the default middleware (which compiles and invokes the webtask code), the middleware can call
next()with no arguments.
** Authentication **