我想了解express.js中的顺序优先级.例如,如下面的代码
var routes = require('./routes/index');
var users = require('./routes/users');
var api = require('./routes/api');
app.use('/api', api);
app.use('/users', users);
app.use('/:name', function(req, res, next) {
console.log('from app.js name:', req.params.name);
res.render('index', {
title: req.params.name
});
}, routes);
app.use('/', function(req, res, next) {
res.render('index', {
title: 'MainPage'
});
});
Run Code Online (Sandbox Code Playgroud)
如果请求来自客户端localhost:3000/api/abc和localhost:3000/user/abc,则来自api和用户模块的响应.但是如果我发出像localhost:3000/myName/xyz这样的请求,app模块会返回一个响应.这种行为让我关注表达式的优先级和路由器模块的正确顺序.为什么路由器不会在动作"api","users"和参数":name"之间混淆.请让我清楚地了解快递的作用和优先级.
Lax*_*nge 25
订单先到先得.
在你的情况下,如果用户点击/ api,他将从api获得响应,但如果你/:name
之前写过路由/api
,/:name
也会为/api
请求服务.
案例1:
/api
将满足请求/api
.
var routes = require('./routes/index');
var users = require('./routes/users');
var api = require('./routes/api');
app.use('/api', api);
app.use('/users', users);
app.use('/:name', function(req, res, next) {
console.log('from app.js name:', req.params.name);
res.render('index', {
title: req.params.name
});
}, routes);
app.use('/', function(req, res, next) {
res.render('index', {
title: 'MainPage'
});
});
Run Code Online (Sandbox Code Playgroud)
案例2:
/:name
提供/api
和的请求/users
var routes = require('./routes/index');
var users = require('./routes/users');
var api = require('./routes/api');
app.use('/:name', function(req, res, next) {
console.log('from app.js name:', req.params.name);
res.render('index', {
title: req.params.name
});
}, routes);
app.use('/api', api);
app.use('/users', users);
app.use('/', function(req, res, next) {
res.render('index', {
title: 'MainPage'
});
});
Run Code Online (Sandbox Code Playgroud)
ExpressJS 文档中给出的示例非常简单,但不幸的是很难找到。我只是通过另一个SO问题才找到它的。
中间件函数是按顺序执行的,因此中间件包含的顺序很重要
app.use(function(req, res, next) {
res.send('This is the only thing that ever happens')
}
app.use(...) // never used
app.get(...) // never used
app.put(...) // never used
app.post(...) // never used
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8613 次 |
最近记录: |