为什么 req.route 显示以前的路线
Why is req.route showing previous route
我有
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 为 Guid。一年多了一直这样,现在不行了,如果我把路由器
.route('/link-metadata') ... 在 /:id 路由之上,它有效。为什么会这样?
因为顺序。
.route('/:id')
这基本上意味着 /.*
所以,任何路线都属于这个范围。
因此,当您击中 /link-metada
时,它击中了 /:id
路线。其中 req.param.id
是 "link-metada"
.
将您的 /link-metadata
放在 /:id
路线上方,它将起作用。
我有
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 为 Guid。一年多了一直这样,现在不行了,如果我把路由器 .route('/link-metadata') ... 在 /:id 路由之上,它有效。为什么会这样?
因为顺序。
.route('/:id')
这基本上意味着 /.*
所以,任何路线都属于这个范围。
因此,当您击中 /link-metada
时,它击中了 /:id
路线。其中 req.param.id
是 "link-metada"
.
将您的 /link-metadata
放在 /:id
路线上方,它将起作用。