快递,听多重路线
我正在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 常见问题 。