我有
const router = express.Router();
router
.route('/:id')
.delete(
validate(messageValidator.deleteById),
MessageController.deleteById,
)
.get(
validate(messageValidator.getById),
MessageController.getById,
);
router
.route('/link-metadata')
.get(
validate(messageValidator.link),
MessageController.getLinkMetadata,
);
我不知道如何,但是,当我向/ link-metadata请求时,req.route如下: 。
这给了我一个错误,因为验证第一条路线需要输入Id。这样已经一年多了,如果我把路由器放了,现在就不能用了 .route('/ link-metadata')... // id路由上方,它可以正常工作。为什么会这样?
答案 0 :(得分:1)
因为订单。
.route('/:id')
基本上意味着/.*
,因此,任何路线都将落入此范围。
因此,当您击中/link-metada
时,它击中了/:id
路线。 req.param.id
是"link-metada"
的地方。
将/link-metadata
放在/:id
路线上方,这样就可以了。