你能创build一个快速路由处理程序的所有动词,还没有处理程序的给定端点?

我有一个只能用于POST的API端点。 如果我用任何其他HTTP动词向该端点发出请求,我会得到一个相当难看的非JSON响应: Cannot POST /path/to/api 。 如果我可以做一个语句来处理尚未明确定义的其他HTTP动词(例如: router.other('/path/to/api', function () { ... });

我尝试使用router.all('/path/to/api', function () { ... }); 而且似乎是按照我想要的,但是根据Express文档给出的内容 ,似乎并不是解决问题的恰当方法。 如果我知道在POST函数中调用res.*router.all()是一个可接受的解决scheme吗?

谢谢你的帮助!

.all()实际上为每个(支持的)HTTP方法添加了单独的路由处理程序 ,这可能是低效的,因为Express可能需要单独检查每个方法。

如果你想要更多的单一的解决scheme,你可以使用.use()来代替,只需要添加一个路由处理器即可:

 router.post(....) .use(function(req, res, next) { // ... }); 

这听起来像是一个合理的用例。 我build议在你的路线上使用链接来简化分组,例如

 router.other('/path/to/api') .post(fuunction(req, res){ // Handle the API request. }) .all(function(req, res){ // Respond with an error about invalid METHODs. });