快递,听多重路线

我正在build立一个基于快速的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'}); }); 

所以我只有一个失败点,而不是必须检查每一个路线?

Express使用path-to-regexp来匹配路由path; 请参阅path-to-regexp文档以获取定义pathpath的所有可能性。 Express Route Tester是testing基本Express路由的便捷工具,但不支持模式匹配。

你可以使用/^(signup|login)\/(.+)/ 。 请参阅DOCS

在你的情况下:

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

path也可以是正则expression式 ,所以下面的东西应该工作:

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

您可以使用您的URLpath和方法检查来定义一个函数,并将其用于传递给应用程序的中间件来处理这种错误情况。

只需在你的路线之前定义它。

这里是一个例子:

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

这是expressjs 常见问题 。