Express.js有多种方法

时间:2014-11-19 19:38:40

标签: node.js express

所以在快递中你可以做到:

app.get('/logo/:version/:name', function (req, res, next) {
    // Do something
}    

app.all('/logo/:version/:name', function (req, res) {
    // Do something
}    

有没有办法只有两种方法(即GET和HEAD)?如:

app.get.head('/logo/:version/:name', function (req, res, next) {
    // Do something
}    

4 个答案:

答案 0 :(得分:11)

您可以使用.route()方法。

function logo(req, res, next) {
    // Do something
}

app.route('/logo/:version/:name').get(logo).head(logo);

答案 1 :(得分:8)

只需拔出匿名函数并为其命名:

function myRouteHandler(req, res, next) {
  // Do something
}

app.get('/logo/:version/:name', myRouteHandler);
app.head('/logo/:version/:name', myRouteHandler);

或使用常规中间件功能并检查req.method

app.use('/logo/:version/:name', function(req, res, next) {
  if (req.method === 'GET' || req.method === 'HEAD') {
    // Do something
  } else
    next();
});

答案 2 :(得分:1)

另一个版本:

['get','head'].forEach(function(method){
  app[method]('/logo/:version/:name', function (req, res, next) {
    // Do something
  });
});

答案 3 :(得分:1)

如果多种方法的路由模式相同,也可以使用数组扩展运算符。

例如

const route = [
    '/logo/:version/:name', 
    function handleRequest(req, res) {
        // handle request
    }
];

app.get(...route);
app.post(...route);