854790
路由选择的问题
在使用connect中间件时,我只想让:
app.use('/', (req,res,next)=>{........});
app.use('/home', (req,res,next)=>{........});
"/"和"/home"匹配正常,但是我随便试了一下"/hdgsjah",它不知为什么的就匹配到"/"目录底下,为什么"/abc"、"/dgks".....等目录也会被匹配,好像隐约记得路由规则好像也会匹配其子目录.
求解释,如何过滤掉其他未设置的路由。
我只想"/"匹配到"/"目录的路由,"/home"匹配到"/home",改如何解决?
ps(不要使用框架,用coonect解决),求大神支招。
付代码:
server.js
const
connect = require('connect'),
static = require('serve-static'),
bodyParser = require('body-parser'),
http = require('http'),
fs = require('fs'),
route = require('./route/main'),
app = connect(),
port = process.env.VCAP_APP_PORT || 3000;
app.use(static(__dirname + '/public'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: false
}));
app.use('/home', route.home);
app.use('/', route.login);
http.createServer(app).listen(port, () => {
console.log(`server run in the ${port}`);
});
route/main.js
const
fs = require('fs'),
rLogin = {
"GET": (req, res) => {
fs.readFile('./public/login.html', (err, html) => {
if (err) return console.log(err);
res.writeHeader(200, {
"Content-Type": "text/html"
});
res.write(html);
res.end();
});
},
"POST": (req, res) => {
}
},
rHome = {
"GET": (req, res) => {
fs.readFile('./public/main.html', (err, html) => {
if (err) return console.log(err);
res.writeHeader(200, {
"Content-Type": "text/html"
});
res.write(html);
res.end();
});
},
"POST": (req, res) => {
}
};
module.exports = {
login: (req, res,next) => {
console.log('in the login');
const method = req.method,
run = rLogin[method];
if (!run) {
return console.log('method no defind!');
}
run(req, res);
},
home: (req, res, next) => {
console.log('in the home');
const method = req.method,
run = rHome[method];
if (!run) {
return console.log('method no defind!');
}
run(req, res);
}
}