express中路由挂载的问题
在github上看了这个一起学习node.js 在3.2.1 express.Router这里发现一个问题 文中将路由分离到routes文件夹中,在index.js中使用use挂载 我的问题出现在挂载上
routes/users.js
var express = require('express');
var router = express.Router();
router.get('/:name', function(req, res) {
res.send('hello, ' + req.params.name);
});
module.exports = router;
index.js
var express = require('express');
var app = express();
var indexRouter = require('./routes/index');
var userRouter = require('./routes/users');
app.use('/', indexRouter);
app.use('/users', userRouter);
app.listen(3000);
这样挂载后我发现浏览器cannot get 然后我修改users.js中
router.get('/users/:name', function(req, res) {
res.send('hello, ' + req.params.name);
});
index.js中
app.use('/', userRouter);
这样才能得到正确的name参数 疑惑的是,如果是配置带有参数的url时 如果只能这样,那index中挂载路由看起来会很不清晰,不知道到底是哪一级路由 而文中的方式看起来清晰,却不能够使用 望大神解惑~
5 回复
express接收参数有三种方式,req.param/req.query/req.body。
app.use(’/’, indexRouter); app.use(’/users’, userRouter);
这里是不是进indexRouter然后没有next()啦
你怎么测试的,我试了下一切正常啊
//配置路由routes
app.use('/', routes);
app.use('/ceshi', ceshi);
ceshi.get('/send/:type/:x/:y/:z', function (req, res) {
res.send({type: req.params.type, x: req.params.x, y: req.params.y, z: req.params.z})
})
ceshi.get('/:type/:x/:y/:z', function (req, res) {
res.send({type: req.params.type, x: req.params.x, y: req.params.y, z: req.params.z})
})
http://localhost:8888/ceshi/send/x/1/''/3
//>>{"type":"x","x":"1","y":"''","z":"3"}
http://localhost:8888/ceshi/x/1/''/3
//>>{"type":"x","x":"1","y":"''","z":"3"}
用最新版的 express 试试。上面的代码没毛病。