节点表达参数问题

时间:2017-03-31 09:09:20

标签: node.js express

我们使用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中的错误吗?或者我在这里遗漏了什么?

0 个答案:

没有答案