我试图完全理解什么是中间件,但我遇到了一些困难。
我正在阅读expressJs文档及其对中间件函数的定义,它是 - “中间件函数是可以访问请求对象(req),响应对象(res)和下一个中间件函数的函数应用程序的请求-响应周期。下一个中间件函数通常由名为 next 的变量表示。
我知道下一个变量不必标题为“下一个”才能具有该功能。
我也知道中间件(如 monogJs)和中间件函数/方法(app.use())之间存在差异。在 Angular 中,http 模块也遵循这种模式,就像 Angular 和其他流行框架中的其他事物一样。这些也被视为中间件吗?有人能为我澄清吗?
最佳答案
中间件是在每个请求之前或之后执行的一段代码。这有助于您创建日志记录和授权等共享功能,而无需为每个端点实现代码。
中间件的顺序通常称为中间件链。
app.use(middleware)
这是我们将中间件附加到每个请求的方式。当涉及到数据库连接时,我们倾向于将其排除在请求端点之外,因为它是应用程序全局的。
现在,我们下一步的目的是告诉链函数何时完成。这是回调模式。我们还希望能够发现链中的错误(异常),以便我们可以为其添加共享功能到我们的应用程序中。 JavaScript 没有类型定义,因此我们注册两个函数之间差异的唯一方法是注册参数的数量。这就是错误处理有 4 个参数的原因。
这是具有日志记录和错误处理功能的端点示例
app.use(function(req, res, next) {
console.log('request made to server');
next();
});
app.use(function(error, req, res, next) {
console.log('an error occurred in the code');
next();
});
app.get('/', function(req, res) {
/* Your logic here */
});
如果您希望仅将特定中间件用于几个端点,则可以直接注册它们
app.get('/', middleware, function(res, res) {
/* Your logic here */
});
我希望这有助于理解中间件。中间件是处理堆栈的一部分,而不是协议(protocol)调用。
关于javascript - Angular Http 模块被认为是中间件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42135987/