【发布时间】:2016-10-29 17:53:04
【问题描述】:
我为我的快递服务器设置了 2 条路线,它们看起来非常接近。它们基本上是相同的 url,除了一个是 post 一个是 get,并且 get 有一个额外的路由参数(这是可选的)。现在这些似乎工作正常,但是如果我不将可选参数添加到 get 调用中,它认为我正在尝试发布帖子。我希望能够在不传递第二个可选参数的情况下进行 get 调用。让我向您展示我目前所拥有的:
router.param('itemID', (req, res, next, itemID) => {
verbose("itemID=", itemID);
next();
});
router.param('navigationType', (req, res, next, navigationType) => {
if (!navigationType) {
next();
}
verbose("navigationType=", navigationType);
next();
});
router.route('/:itemID/navigations')
.post(controllers.addActivity)
.all(routes.send405.bind(null, ['POST']));
router.route('/:itemID/navigations/:navigationType')
.get(controllers.listActivities)
.all(routes.send405.bind(null, ['GET']));
routed.send405 方法如下所示:
function send405(methods, req, res) {
res.set('Allow', methods.join(','));
res.status(405).json({
message: `Method '${req.method}' Not Allowed.`
});
}
所以现在的问题是,如果我在 /blah123/navigations 上做一个 get 并且不添加 /:navigationType 变量,它认为我正在尝试使用 post 方法。我对这个工作很陌生,希望能提供任何帮助或见解。谢谢!
【问题讨论】: