javascript - express 有时会选择错误的路线

标签 javascript node.js rest express

我有一个使用 Express (4.0.0) 公开的基于 NodeJS 的 REST 服务,其中我有两个不同的路由,如下所示:

router.get('/buckets/:bucketId/entities/bulk', getEntitiesInBulk);

router.get('/buckets/:bucketId/entities/:key', getEntityByKey);

当我发送这样的请求时:

http://<server:port>/buckets/responses/entities/k3

该请求由我在那里定义的 getEntityByKey() 处理,但奇怪的是,当我用许多请求轰炸它时,它有时会由 getEntitiesInBulk() 处理,并且在响应中收到一些错误,该错误仅由 getEntitiesInBulk() 抛出。

我完全困惑这怎么可能。

最佳答案

Express 很困惑,因为您的路线并不唯一。 “bulk”有时会在第一个路由中用作 :key。只需稍微更改一下签名,例如

router.get('/buckets/:bucketId/entities/bulk', getEntitiesInBulk);
router.get('/buckets/:bucketId/entity/:key', getEntityByKey);

关于javascript - express 有时会选择错误的路线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30724069/

相关文章:

javascript - 正则表达式仅允许数字且最多 2 位数字

javascript - 使用 Javascript 对数值数组的数组进行排序

javascript - Node.js child_process TypeError : Cannot read property '_writableState' of undefined

python - Rest API 应用程序在 'Sandbox' 但不是 'Live' 工作

javascript - 如果数字为 0,则针对空的测试失败

javascript - 如何将文件中的 JSON 数据存储到字符串数组中

node.js - 如何在 res.redirect ('/' )之后执行操作或发送信息?

javascript - 使用 Electron 和 React 从目录读取文件名并输出到 JSON 的方法

api - HTTP HEAD 动词的状态码

javascript - 如何在站点和子站点之间使用 Sharepoint 2013 中的 Rest API 和 javascript 复制文件