我使用下面的代码了解一下新的express.js(4.0)。我无法理解为什么日志记录正在发生,无论我用浏览器点击哪条路径。它不应该只记录website.get
而不记录api.get
路径吗?
// Express 4.0 test...
var express = require('express');
var app = express();
var website = express.Router();
var api = express.Router();
var port = process.env.PORT || 3000;
website.use(function (req, res, next) {
console.log(req.method, req.url);
next();
});
website.get('/', function (req, res) {
res.send('Home page');
});
website.get('/about', function (req, res) {
res.send('About page');
});
api.get('/', function (req, res) {
res.send({'json':'response'});
});
api.get('/user', function (req, res) {
res.send({'user':'john'});
});
// app.get('/', function (request, response) {
// response.writeHead(200, {"Content-Type": "text/html"});
// response.end("<h1>Hello, World!</h1>");
// });
app.use('/', website);
app.use('/api', api);
app.listen(port);
console.log('http(s) server revved up on port ' + port);
任何帮助都会摇滚!
更新:我知道,因为'/api'
与'/'
匹配,所以网站会应用于所有路线。有什么方法可以避免这种情况吗?
答案 0 :(得分:4)
可能首先定义/ api路由器,然后定义另一个 - 秒。
app.use('/api', api);
app.use('/', website);