在为共享部分路径的路由方法创建中间件时,有没有办法排除特定方法(比如GET(?
例如,我有很多形式为/api/item/*
的路由。我想要这样的东西来检查坏数据
router.all('/api/item/*', (req, res, next) => {
const { itemId } = req.body;
if (!itemId) return res.sendStatus(404);
/* rest of logic here */
next()
});
但很明显,我不希望GET也经历这个逻辑,因为它将没有req.body
。
有什么想法吗?
如以上评论中所述,一个解决方案是if (req.method === 'GET') return next();
不久之后,我想到的另一个想法(尽管没有那么优雅(是这样订购我的路线声明:
router.get(...);
router.all(...);
因此,仅将数据检查逻辑应用于非GET请求。