快递,听多路线

时间:2016-08-10 15:58:11

标签: node.js express

我正在构建基于express的REST API,我想在用户使用错误的HTTP谓词来警告用户。

目前,我正在添加

app.all('/', (req, res) => {
    answer(req, res, {code: 400, error: 'Wrong method'});
});

在每条路线之后,它开始变得不可疏忽,我宁愿在一个地方拥有它,并列出我想听的所有路线。

有没有办法做类似的事情:

app.all(['/', '/signup', '/login'], (req, res) => {
    answer(req, res, {code: 400, error: 'Wrong method'});
});

这样我只有一点失败,而不必检查每条路线?

3 个答案:

答案 0 :(得分:2)

Paths can be Regular expressions too,以下内容应该有效:

app.all(/(signup|login)/, (req, res) => {
    answer(req, res, {code: 400, error: 'Wrong method'});
});

答案 1 :(得分:1)

您可以使用对url路径和方法的检查来定义函数,并在传递给 app 的中间件中使用它来处理此错误情况。

只需在路线前定义它。

这是一个例子:

app.use(function(req, res, next){
    if (checkIfIsWrongMethod(req)) {
        answer(req, res, {code: 400, error: 'Wrong method'});
    } else {
        next();
    }
});

这是expressjs FAQ

答案 2 :(得分:1)

  

Express使用path-to-regexp来匹配路径路径;有关定义路径路径的所有可能性,请参阅path-to-regexp文档。 Express Route Tester是一个用于测试基本Express路由的便捷工具,但它不支持模式匹配。

您可以使用/^(signup|login)\/(.+)/。见DOCS

在你的情况下:

app.all(['/^(signup|login)\/(.+)/'], (req, res) => {
    answer(req, res, {code: 400, error: 'Wrong method'});
});