我正在使用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感到困惑,因为您的路线不是唯一的。在第一条路线中,“批量”有时会用作:key。只需稍微更改签名即可,例如

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

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

10-11 03:06