我们使用Node.js + Express作为Angular2应用程序的后端。后端的一个模块负责基于条形码收集有关产品的信息,这是Express路由器的一个参数。目前,我们在添加不使用条形码参数的GET请求路由时遇到问题。
路由器文件如下所示:
'use strict';
const express = require('express');
const router = express.Router();
const prodCtrl = require('./controller');
const auth = require('../middlewares/authenticationBearer');
module.exports.init = function(app) {
router.param('barcode', prodCtrl.findById);
router.get('/products/:barcode', auth.bearer(), prodCtrl.getProduct);
router.post('/products/article', auth.bearer(), prodCtrl.getProductData);
router.get('/products/csv', auth.bearer(), prodCtrl.csv);
return router;
}
问题是/products/csv
路线。在当前位置,调用路由会出现404错误,因为预期参数barcode
,因为首先调用函数prodCtrl.findById
。通过在/products/:barcode
路线之前移动此路线,如此:
'use strict';
const express = require('express');
const router = express.Router();
const prodCtrl = require('./controller');
const auth = require('../middlewares/authenticationBearer');
module.exports.init = function(app) {
router.param('barcode', prodCtrl.findById);
router.get('/products/csv', auth.bearer(), prodCtrl.csv);
router.get('/products/:barcode', auth.bearer(), prodCtrl.getProduct);
router.post('/products/article', auth.bearer(), prodCtrl.getProductData);
return router;
}
代码工作正常。这是Express中的错误吗?或者我在这里遗漏了什么?