2016-04-11 12 views
0

Express.Router() kullanarak isteğe bağlı URL parametresi almaya çalıştım, ancak çalışmıyor. express.Router() İsteğe bağlı parametrelerle URL yolu almak

Ben app.get kullanırsanız

, doğru çalışıyor: I() bu kullanarak express.Router gibi kullanmaya çalıştığınızda

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

tek sorundur. Böyle denedim:

app.js:

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

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

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

yolları/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; 

Ben de böyle denedim:

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

Nasıl? Bunu düzgün bir şekilde çözmek için? Teşekkürler.

cevap

2

Her iki çözümünüzde de yanlış yol alıyorsunuz. İlk durumda /videos/:category/:category, ikinci durumda - /videos/:category/.

app.js:

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

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

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

yolları/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; 
+0

Sen router.js router.get parametreyi taşımak ve app.js app.use çıkarın gerekir Teşekkürler. Bu çalıştı :) – dragfire