簡體   English   中英

express.Router()獲取帶有可選參數的URL路由

[英]express.Router() get url route with optional parameters

我試圖使用express.Router()獲得可選的URL參數,但是它不起作用。

如果我使用app.get,它將正常工作:

app.get('/videos/:category', function(req, res){
    // localhost:9876/videos/music
    debug(req.params); // This is working as expected
});

唯一的問題是,當我嘗試通過express.Router()使用這種方法時。 我已經試過像這樣:

app.js:

var express = require('express');
var app = express();

var videos = require('./routes/videos');

app.use('/videos/:category', videos);

路線/videos.js:

var express = require('express');
var router = express.Router();

router.get('/:category', function(req, res){
    debug(req.params, req.params.category); // req.params is empty {}
});
module.exports = router;

我也嘗試過這樣:

router.get('/', function(req, res){
        debug(req.params, req.params.category); // req.params is empty {}
});

如何正確解決呢? 謝謝。

在這兩種解決方案中,您都會走錯路。 第一種情況是/videos/:category/:category ,第二種情況是- /videos/:category/ 您需要將參數移動到router.js router.get並將其從app.js app.use刪除:

app.js:

var express = require('express');
var app = express();

var videos = require('./routes/videos');

app.use('/videos', videos);

路線/videos.js:

var express = require('express');
var router = express.Router();

router.get('/:category', function(req, res){
    debug(req.params, req.params.category); // req.params is empty {}
});
module.exports = router;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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