簡體   English   中英

NodeJs express.Router解析到錯誤的路徑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM