[英]NodeJs express.Router resolves to wrong path
我有如下路由器設置:
'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/
。 僅當我注釋掉以下subpath
行時, subpath
才可用:
'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;
我在做錯什么配置?
您需要顛倒路線的順序:
'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
。
嘗試將絕對路線放在相對路線之上。
router.post('/update/:param', controller.updateEntity);
router.get('/subpath', controller.getEntityPath);
router.put('/:param', controller.updateEntity);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.