如果我的的get、post回调函数中,没有next参数,那么就匹配上第一个路由,就不会往下匹配了。
如果想往下匹配的话,那么需要写next()
app.get("/",function(req,res,next){
console.log("1");
next();
});
app.get("/",function(req,res){
console.log("2");
});
代码冲突路由情况:
var express = require("express");
var app = express();
app.get("/:username/:id", function (req, res) {
console.log("1");
res.send("用户信息" + req.params.username);
});
app.post("/admin/login", function (req, res) {
console.log("2");
res.send("管理员登录");
});
app.listen(3000);
解决方式:可以换一下上下位置
这些路由只要匹配上第一个,就不会往下匹配了。
另一个解决方法:检索判断
var express = require("express");
var app = express();
app.get("/:username/:id", function (req, res) {
var username = req.params.username;
//检索数据库,如果username不存在,那么next()
if(检索数据库){
console.log("1");
res.rend("用户信息");
} else {
next();
}
});
app.post("/admin/login", function (req, res) {
console.log("2");
res.send("管理员登录");
});
app.listen(3000);
路由get、post就是中间件,中间件讲究顺序,匹配上第一个之后,就不会往后匹配了。next函数才能够往后匹配