Ale*_*ini 5 javascript node.js express
我是一个 node.js/express.js 新手。如何验证:id参数?我只想将数字传递给:id参数。如果:id是一个字符串或包含其中一个,我会显示一个 404 错误,如 zend 框架路由http://framework.zend.com/manual/current/en/user-guide/routing-and-controllers.html
/routes/users.js
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/:id?/', function(req, res, next) {
var id = req.params.id;
if(id){
res.render('single-users', { title: 'Single ' + id });
}else {
res.render('users', { title: 'All users' });
}
});
module.exports = router;
Run Code Online (Sandbox Code Playgroud)
我试图改变
router.get('/:id?/', function(req, res, next)
到
router.get('/[0-9]+?/', function(req, res, next)
但
localhost:3000/users/ab/
Run Code Online (Sandbox Code Playgroud)
工作和显示single-users页面,我想要它..
卢卡斯·科斯塔提出的解决方案
var express = require('express');
var router = express.Router();
/* GET users listing. */
router.get('/:id(\\d+)?/', function(req, res) {
var id = req.params.id;
if(id){
res.render('single-users', { title: 'Single ' + id });
}else {
res.render('users', { title: 'All users' });
}
});
module.exports = router;
Run Code Online (Sandbox Code Playgroud)
或者
router.get('/:id([0-9]+)?/', function(req, res)
Run Code Online (Sandbox Code Playgroud)
您可以提供正则表达式:
router.get('/:id(\\d+)/', function (req, res, next){
// body
});
Run Code Online (Sandbox Code Playgroud)