您可以为所有没有给定端点的处理程序的动词创建Express Router处理程序吗?
我有一个API端点,该端点仅可用于POST。如果我使用任何其他HTTP动词向该终结点发出请求,则会收到一个非常难看的非JSON响应:Cannot POST /path/to/api
。如果我能做出一个处理未明确定义的其余HTTP动词的语句(例如:router.other('/path/to/api', function () { ... });
我尝试使用router.all('/path/to/api', function () { ... });
,它似乎可以满足我的要求,但是根据Express documentation中给出的内容,它似乎并不是解决问题的正确方法。如果我知道我在POST函数中调用了router.all()
,res.*
是否可以接受?
感谢您的帮助!
回答如下:[.all()
实际上是每个(受支持的)HTTP方法的adds separate route handlers,这可能效率不高,因为Express可能必须单独检查每个方法。
如果想要更多的单一总体解决方案,则可以改用.use()
,它将仅捕获一个路由处理程序而捕获所有内容:
router.post(....)
.use(function(req, res, next) {
// ...
});