作业:
我对 node.js 中的 url 处理知之甚少
app.param('id', /^\d+$/);
app.get('/user/:id', function(req, res){
res.send('user ' + req.params.id);
});
将只接受 /user/1, /user/2 ...即 id 仅作为整数
app.get('/:type(discussion|page)/:id', ...)
将只接受具有讨论或页面价值的类型
app.param('range', /^(\d+)\-(\d+)?$/);
app.get('/range/range=:range', function(req, res){
var range = req.params.range;
res.send('from ' + range[1] + ' to ' + range[2]);
});
将轻松处理整数范围并直接给我们一个数组,无需任何拆分或解析和验证。
问题 :
通常服务器以相同的方式接受 www.example.com/path 和 www.example.com//path 但在 node.js 中我必须编写两个单独的 app.get 检查来做到这一点。如何仅通过一项检查来实现这一点,以便 /path、//path、///path 给出相同的响应
我有一个查找 /:path 的 url,并且 path 可以采用字典中列出的值
var dict={ "a":"You called a", "b": "b is second", "c": "cats are all over internet" } app.get('/:charc',function(req,res){ res.send(dict[charc]); });
如何限制应用程序仅接受 a,b,c 而不设置 if else 条件。目前我正在做
if (typeof dict[charc] == 'undefined') res.send(404, 'Sorry, we cannot find that!');
我可以在“?”之后以同样的方式调用范围参数(来自作业部分)像
app.get('/range?range=:range',...
带有网址 www.example.com/range?range=123-234