var express = require('express');
//var app = express.createServer(); //该方法已被删除
var app = express();
app.get('/:id?', function(req, res){ //此处id代表/后面的所有值 ,id可改为任何字符,比如改为qch,那么req.params.qch得到/后面的所有值 (疑问:必须是res形参,如果将res改为rsp会报错)
if(req.params.id){
res.send(req.params.id);
}else{
res.send('oh hai');
}
});
app.listen(9001);
//http://127.0.0.1:9001/id=3&&qiuchunhui
//var app = express.createServer(); //该方法已被删除
var app = express();
app.get('/:id?', function(req, res){ //此处id代表/后面的所有值 ,id可改为任何字符,比如改为qch,那么req.params.qch得到/后面的所有值 (疑问:必须是res形参,如果将res改为rsp会报错)
if(req.params.id){
res.send(req.params.id);
}else{
res.send('oh hai');
}
});
app.listen(9001);
//http://127.0.0.1:9001/id=3&&qiuchunhui
//id=3&&qiuchunhui
本例演示了如何在一个路由中包含一个可选的变量 id。 Express并不关心变量的取名, 但之后能够在回调函数中使用它。 在Express路由中, 我们使用冒号(:) 来标记想要使用的变量, 那么在URL中传递的字符串就会被捕获并保存在该变量中。
如果你运行此程序, 然后访问 http://localhost:9001, 就只会得到“oh hai” 的响应, 因为你没有在端口后面用 / 带上路由的可选变量部分。 如果随意带上点什么内容(只要不包含另外一个 / 在里面),就将在响应内容中得到一样的内容, 因为匹配了 id 关键字的内容会被保存在 req.params.id 中。
Express 路由总是将/视作一个标记, 而同时又会把请求末尾的/当做可选项, 所以我们提供的路由/:id?会匹配上 localhost、localhost/、localhost/tom和localhost/tom/, 但不包括localhost/tom/tom