gpt4 book ai didi

javascript - express (4.0) 自定义中间件在路由器的两个实例上运行,即使它只为一个声明

转载 作者:行者123 更新时间:2023-11-30 10:14:30 26 4
gpt4 key购买 nike

我正在使用下面的代码来学习一些关于新的 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' 匹配 '/',网站被应用到所有路由。有什么办法可以避免这种情况吗?

最佳答案

可能首先定义/api 路由器,然后再定义另一个。

app.use('/api', api);
app.use('/', website);

关于javascript - express (4.0) 自定义中间件在路由器的两个实例上运行,即使它只为一个声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24635563/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com