gpt4 book ai didi

node.js - Express.js 中间件分支或多个 app.routes 中间件

转载 作者:搜寻专家 更新时间:2023-10-31 22:57:49 24 4
gpt4 key购买 nike

我们正在创建一个单独的 API 应用程序,但被迫使其成为现有 express.js 主应用程序的一部分。

我的问题是,如何将 API 身份验证放在适当的位置。我想把它做成一个中间件,在中间件后面是 app.routes 中间件来处理 API 路由。

是否可以:

  • 在确定子域是 ['api'] 后从主中间件堆栈分支出来?

  • 将身份验证中间件和 API app.routes 中间件放在主 app.routes 中间件之前? (实际上有两层 app.routes 中间件)

编辑:

此外,假设我选择第二个选项,是否可以将两个中间件 (auth + api app.routes) 作为全局列表中的单个中间件公开?

最佳答案

您可以使用自己的中间件路由到 Express 应用。因此,一个应用程序适用于大多数路线,一个 api 应用程序适用于 api 路线。

示例:http://runnable.com/UWx2MZS8trEHAACZ

var express = require('express');
var app = express();
var api = express();

app.configure(function () {
app.use(express.static(__dirname));
});

app.get('/', function(req, res){
res.send('Hello World');
});

app.get('/api*', api);

api.configure(function () {
api.use(function (req, res, next) {
process.stdout.write('checking');
setTimeout(process.stdout.write.bind(process.stdout, '.'), 100);
setTimeout(process.stdout.write.bind(process.stdout, '.'), 200);
setTimeout(process.stdout.write.bind(process.stdout, '.'), 300);
setTimeout(process.stdout.write.bind(process.stdout, '.'), 400);
setTimeout(process.stdout.write.bind(process.stdout, '.'), 500);
setTimeout(process.stdout.write.bind(process.stdout, '.'), 600);
setTimeout(process.stdout.write.bind(process.stdout, '.'), 700);
setTimeout(process.stdout.write.bind(process.stdout, '.'), 800);
setTimeout(process.stdout.write.bind(process.stdout, '.\n'), 900);
setTimeout(function () {
next();
}, 1000);
});
});

api.get('*', function (req, res) {
res.send('Hello API');
});

app.listen(process.env.OPENSHIFT_NODEJS_PORT, process.env.OPENSHIFT_NODEJS_IP);

关于node.js - Express.js 中间件分支或多个 app.routes 中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16023365/

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