Node.js 路由器解析到错误路径

Node.js 路由器解析到错误路径,node.js,express,Node.js,Express,我有如下路由器设置: 'use strict'; const express = require('express'); const controller = require('../../module/controllers/controller'); const router = express.Router(); router.get('/:param', controller.getEntity); router.get('/', controller.getEntities);

我有如下路由器设置:

'use strict';

const express = require('express');
const controller = require('../../module/controllers/controller');

const router = express.Router();

router.get('/:param', controller.getEntity);
router.get('/', controller.getEntities);
router.put('/:param', controller.updateEntity);
router.post('/update/:param', controller.updateEntity);
router.get('/subpath', controller.getEntityPath);

module.exports = router;
以上所有路由都有一个父路由:
parent

当我尝试呼叫
http://hostname/parent/subpath
它会一直转到
http://hostname/parent/
。仅当我注释掉以下行时,
子路径
才可用:

'use strict';

const express = require('express');
const controller = require('../../module/controllers/controller');

const router = express.Router();

// router.get('/:param', controller.getEntity);
// router.get('/', controller.getEntities);
router.put('/:param', controller.updateEntity);
router.post('/update/:param', controller.updateEntity);
router.get('/subpath', controller.getEntityPath);

module.exports = router;

我在配置中做错了什么?

尝试将绝对路由置于相对路由之上

router.post('/update/:param', controller.updateEntity);
router.get('/subpath', controller.getEntityPath);    
router.put('/:param', controller.updateEntity);

尝试将绝对路线置于相对路线之上

router.post('/update/:param', controller.updateEntity);
router.get('/subpath', controller.getEntityPath);    
router.put('/:param', controller.updateEntity);

您需要颠倒路线的顺序:

'use strict';

const express = require('express');
const controller = require('../../module/controllers/controller');

const router = express.Router();

router.get('/', controller.getEntities);
router.post('/update/:param', controller.updateEntity);
router.get('/subpath', controller.getEntityPath);
router.get('/:param', controller.getEntity);
router.put('/:param', controller.updateEntity);
module.exports = router;

因为
http://hostname/parent/subpath
首先匹配
/:param

您需要颠倒路由顺序:

'use strict';

const express = require('express');
const controller = require('../../module/controllers/controller');

const router = express.Router();

router.get('/', controller.getEntities);
router.post('/update/:param', controller.updateEntity);
router.get('/subpath', controller.getEntityPath);
router.get('/:param', controller.getEntity);
router.put('/:param', controller.updateEntity);
module.exports = router;
因为
http://hostname/parent/subpath
首先匹配
/:param