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