gpt4 book ai didi

javascript - 如何在express.js中使用嵌套中间件

转载 作者:太空宇宙 更新时间:2023-11-04 02:21:34 26 4
gpt4 key购买 nike

我想对代码的实际结构进行更改。这是我的实际代码:

//index.js
var routes = require('./routes');
var subdomain = require('express-subdomain');

//require express app with settings
var app = require('./app');

//export the application
module.exports = app;

// routes request like endusers-api.mydomain.ext/
app.use(subdomain('endusers-api', routes.apis.endusers));
// routes request like mydomain.ext/
app.use(routes.webapps.endusers);


//routes/index.js
var apis = {endusers: require("./apis/endusers")}
var webapps = {endusers: require("./webapps/endusers")}
var routes = {apis: apis, webapps: webapps}

module.exports = routes;


//routes/apis/endusers
var express = require('express');
var route = express.Router();
var logger = require('../../lib/logger');

route.get('/', logger("endusers-api-access"), function(req, res, next) {
res.json({
"name" : "Endusers API"
});
});

module.exports = route;


//routes/webapps/endusers.js
var express = require('express');
var route = express.Router();
var logger = require('../../lib/logger');

route.get('/', logger("endusers-webapp-access"), function(req, res, next) {
res.render('endusers/index', {title: 'Homepage'});
});

module.exports = route;

现在我想将上面的代码更改为这样(请随时告诉我这是否是在 Node.js 中执行操作的好方法):

//index.js
var middlewares = require('./middlewares');
var app = require('./app');

module.exports = app;

//i want to change to this
app.use(middlewares.endusersApi);
app.use(middlewares.endusersWebapp);

//Stuff for creating server and listening...


//middlewares/index.js
var middlewares = {
endusersApi : require("./apis/endusers"),
endusersWebapp : require("./webapps/endusers")
}

module.exports = middlewares;


//middlewares/apis/endusers.js
//TODO


//middlewares/webapps/endusers
//TODO

我应该如何编写上面的TODO部分。看起来我们需要嵌套中间件(一个中间件调用另一个中间件)。请提出您的建议。

最佳答案

我使用express.Router().all()方法找到了答案。

//middlewares/apis/endusers.js
var routes = require('../../routes');
var express = require('express');
var middleware = express.Router();

middleware.all('/',subdomain('endusers-api', routes.apis.endusers));
//the two next lines are alternatives to the line above
//middleware = subdomain('endusers-api', routes.apis.endusers); //can assign only one route
//middleware.use(subdomain('endusers-api', routes.apis.endusers)); // can use many routes

module.exports = middleware;


//middlewares/webapps/endusers.js
var routes = require('../../routes');
var express = require('express');
var middleware = express.Router();

middleware.all('/', routes.webapps.endusers);
//the two next lines are alternatives to the line above
//middleware = routes.webapps.endusers; //can assign only one route
//middleware.use(routes.webapps.endusers); // can use many routes

module.exports = middleware;

关于javascript - 如何在express.js中使用嵌套中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33123343/

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