Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript express(4.0)定制中间件在路由器的两个实例上运行,即使它';他只为一个人申报_Javascript_Node.js_Express_Url Routing - Fatal编程技术网

Javascript express(4.0)定制中间件在路由器的两个实例上运行,即使它';他只为一个人申报

Javascript express(4.0)定制中间件在路由器的两个实例上运行,即使它';他只为一个人申报,javascript,node.js,express,url-routing,Javascript,Node.js,Express,Url Routing,我正在使用下面的代码学习一些关于新的express.js(4.0)的知识。我似乎无法理解为什么不管我用浏览器点击哪个路径,日志记录都会发生。它不应该只记录网站.get而不记录api.get路径吗 // Express 4.0 test... var express = require('express'); var app = express(); var website = express.Router(); var api = express.Router(); var port = pr

我正在使用下面的代码学习一些关于新的express.js(4.0)的知识。我似乎无法理解为什么不管我用浏览器点击哪个路径,日志记录都会发生。它不应该只记录
网站.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);
//Express 4.0测试。。。
var express=需要(“express”);
var-app=express();
var-website=express.Router();
var api=express.Router();
var port=process.env.port | 3000;
网站使用(功能(请求、回复、下一步){
日志(req.method,req.url);
next();
});
get(“/”,函数(req,res){
res.send(“主页”);
});
获取('/about',函数(req,res){
res.send(‘关于页面’);
});
api.get('/',函数(req,res){
res.send({'json':'response'});
});
获取('/user',函数(req,res){
res.send({'user':'john'});
});
//app.get('/',函数(请求,响应){
//writeHead(200,{“内容类型”:“text/html”});
//回应。结束(“你好,世界!”);
// });
应用程序使用(“/”,网站);
应用程序使用('/api',api);
app.listen(端口);
log('http(s)服务器在端口'+端口上加速);
任何帮助都会震撼


更新:我明白了,因为
'/api'
匹配
'/'
,所以网站应用于所有路线。有没有办法避免这种情况?

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

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

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

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

中间件按照路由处理的顺序进行处理(请参阅:)中间件按照路由处理的顺序进行处理(请参阅:)