javascript - Angular Http 模块被认为是中间件吗?

标签 javascript angularjs node.js express middleware

我试图完全理解什么是中间件,但我遇到了一些困难。

我正在阅读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/

相关文章:

javascript - 使用 Strapi 获取所有单一类型页面的 GraphQL 查询

javascript - Jest 循环遍历动态测试用例

javascript - ExtJs4 如何在循环中创建动态函数

javascript - AngularJS 路由附加错误的目录名称

javascript - 使用 Angular + Play 框架 (Java) 进行 SPA 身份验证

javascript - 在 Angular js 中请求特定 html 页面时强制 Http 状态

node.js - 如何获取具有不同值(其中其他值最低)的 (Node.js) MongoDB 文档?

Javascript 关闭窗口

java - GWT - JavaScript 调试器的阻力

javascript - Ember 第一个应用程序无法识别 xml2json 中的 xmlcode