中间件

作者: QT2019NB | 来源:发表于2019-07-09 11:29 被阅读0次

1.什么是中间件(Middleware)?

中间件是一种装配到应用管道以处理请求和响应的软件。

每个组件:

  • 选择是否将请求传递到管道中下一个组件
  • 可在调用管道中的下一个组件前后执行工作
    请求委托(Request delegates)用于生成请求管道,处理每个HTTP请求。
    请求委托使用RunMapUse扩展方法进行配置

使用RunMapUse扩展方法来配置请求委托。

1.并行中间件: 可将一个单独的请求委托并行指定为匿名方法
2.中间件组件: 或在可重用的类中对其进行定义。这些可重用的类和并行匿名方法

中间件.png

每个委托可以在下一个委托之前和之后执行操作。委托还可以决定不将请求传递给下一个委托,这称为请求管道的短路。短路通常是可取的,因为它避免了不必要的工作。

1.所有的请求处理都会在每个中间件组件调用next()方法之前触发。请求按照图中箭头的所示方向,依次穿过所有管道
2.当中间件处理请求并产生响应时,请求流程会在管道开始反向传递

可以看出请求委托的执行顺序是遵循上面的流程图的。

注意:
响应发送到客户端后,请勿调用next.Invoke。 响应开始之后,对HttpResponse的更改将抛出异常。 例如,设置响应头,状态代码等更改将会引发异常。在调用next之后写入响应体。

  • 可能导致协议违规。 例如,写入超过content-length所述内容长度。
  • 可能会破坏响应内容格式。 例如,将HTML页脚写入CSS文件。

HttpResponse.HasStarted是一个有用的提示,指示是否已发送响应头和/或正文已写入。

顺序

Startup.Configure方法中添加中间件的顺序定义了在请求上调用它们的顺序,以及响应的相反顺序。此排序对于安全性,性能和功能至关重要。
Startup.Configure方法添加了以下中间件组件:
1.异常/错误处理
2.静态文件服务
3.身份认证
4.MVC

Use、Run和Map

你可以使用UseRunMap配置HTTP管道。
Use方法可以使管道短路(即可以不调用下一个请求委托)
Run方法是一个约定,并且一些中间件可能暴露在管道末端运行的Run[Middleware]方法。
Map*扩展用作分支管道的约定。映射根据给定的请求路径的匹配来分支请求流水线,如果请求路径以给定路径开始,则执行分支

相关文章

  • 翻译

    Laravel 的路由中间件 简介 创建中间件 注册中间件全局中间件为路由指定中间件中间件组 中间件参数 Term...

  • 中间件学习——具体分类

    中间件分为远程过程调用中间件、数据访问中间件、消息中间件、事务(交易)处理中间件、分布式对象中间件。 远程过程调用...

  • nodejs19-express中间件

    中间件 匹配路由之前和之后做的操作 应用级中间件 路由级中间件 错误处理中间件 内置中间件 第三方中间件 应用级中...

  • 4.3KOA 中间件模块化与中间件合成

    中间件模块化与中间件合成 一、中间件模块化 定义中间件模块 使用中间件模块 二、使用 koa-compose 模块...

  • 4.2KOA 中间件执行流程

    中间件执行流程 代码执行流程 中间件 1 开始执行中间件 2 开始执行执行内容中间件 2 结束执行中间件 1 结束...

  • 13.中间件和上下文处理器

    中间件 中间件的引入image.png django中的中间件django 中的中间件(middleware),在...

  • Express学习

    使用中间件 Express 应用可使用如下几种中间件:* 应用级中间件* 路由级中间件* 错误处理中间...

  • Express 中间件

    中间件的概念 什么是中间件 中间件(Middleware),特指业务流程的中间处理环节。 Express 中间件的...

  • Scrapy爬虫框架(七) ------ 下载中间件(Midd

    1. Spider 下载中间件(Middleware) Spider 中间件(Middleware) 下载器中间件...

  • laravel api设置Accept 头

    一、创建中间件设置Accept 头 生成中间件 设置Accept头 将中间件添加到api中间件组中

网友评论

      本文标题:中间件

      本文链接:https://www.haomeiwen.com/subject/lqpmhctx.html