Simplify app.all and app.VERB
Author: ibcCreated Feb 23, 2015Updated Jul 25, 2026
Labels5.xmodule:router
https://github.com/strongloop/express/blob/5.0/lib/application.js
Currently:
/**
* Delegate `.VERB(...)` calls to `router.VERB(...)`.
*/
methods.forEach(function(method){
app[method] = function(path){
if ('get' == method && 1 == arguments.length) return this.set(path);
var route = this.route(path);
route[method].apply(route, slice.call(arguments, 1));
return this;
};
});
/**
* Special-cased "all" method, applying the given route `path`,
* middleware, and callback to _every_ HTTP method.
*
* @param {String} path
* @param {Function} ...
* @return {app} for chaining
* @api public
*/
app.all = function(path){
var route = this.route(path);
var args = slice.call(arguments, 1);
methods.forEach(function(method){
route[method].apply(route, args);
});
return this;
};
But the following simplified code does exactly the same (in fact lib/Router/index.js does it):
/**
* Delegate `.all(...)` and `.VERB(...)` calls to `Router#all(...)` and `Router#VERB(...)`.
*/
methods.concat('all').forEach(function(method){
app[method] = function(path){
if ('get' == method && 1 == arguments.length) return this.set(path);
var route = this.route(path);
route[method].apply(route, slice.call(arguments, 1));
return this;
};
});
Source: expressjs/express