【发布时间】:2016-04-21 08:04:20
【问题描述】:
我正在使用 expressjs 开发一个 REST API。 我有两个 api 端点如下:
router.get('/probe/:id', function() {});
router.get('/:id', function() {});
现在,当我调用第一个端点时,也会调用第二个端点(id 为“probe”)。
如何确保只调用第一个?
我已经按照上面显示的顺序定义了它们。
编辑
我确实在我的条件中的else 之一中调用了next()。
现在,我有一个新的错误。
当我调用端点 /probe/ - 表示没有 id 时,只调用第二条路由,而永远不会调用第一条路由。
这是我的代码现在唯一一次失败。
我在这里错过了什么?
【问题讨论】:
-
你在第一个函数中做了什么?你是打电话给
res.end();还是在某个地方有一个next();? -
检查你的第一个路由中是否有
next(),如果它在那里,next()告诉 express 继续使用任何其他匹配的路由(这就是它会触发两条路由的原因)。有关更详细的说明,请参阅here。 -
我打电话给
res.json(),它调用res.end(); -
您是否在 webapp 中使用任何其他中间件?
-
我在导致上述行为的一种情况下打电话给
next()。很抱歉造成混乱。
标签: javascript node.js express