前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >.NET 云原生架构师训练营(模块二 基础巩固 HTTP管道与中间件)--学习笔记

.NET 云原生架构师训练营(模块二 基础巩固 HTTP管道与中间件)--学习笔记

原创
作者头像
郑子铭
修改2020-12-22 10:41:22
2410
修改2020-12-22 10:41:22
举报
文章被收录于专栏:DotNet NB && CloudNative

2.3.2 Web API -- HTTP管道与中间件

  • 管道
  • 中间件

ASP.NET Core 中间件:https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/middleware/?view=aspnetcore-5.0

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

  • 选择是否将请求传递到管道中的下一个组件。
  • 可在管道中的下一个组件前后执行工作。

请求委托用于生成请求管道。 请求委托处理每个 HTTP 请求。

管道

中间件

Startup.cs

代码语言:javascript
复制
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    // 默认启用 https
    app.UseHttpsRedirection();
    app.UseRouting();
    app.UseCors();
    app.UseAuthentication();
    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

自定义的中间件

代码语言:javascript
复制
app.Run(async context =>
{
    await context.Response.WriteAsync("my middleware");
});

启动程序,输出如下:

代码语言:javascript
复制
my middleware

使用 app.Run 之后管道中止,不会继续执行 app.UseEndpoints,如果想要继续执行,可以使用 app.Use 并调用 next()

代码语言:javascript
复制
app.Use(async (context, next) =>
{
    await context.Response.WriteAsync("my middleware 1");
    await next();
});

app.Run(async context =>
{
    await context.Response.WriteAsync("my middleware 2");
});

启动程序,输出如下:

代码语言:javascript
复制
my middleware 1my middleware 2

GitHub源码链接:

https://github.com/MINGSON666/Personal-Learning-Library/tree/main/ArchitectTrainingCamp/HelloApi

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.3.2 Web API -- HTTP管道与中间件
    • 管道
      • 中间件
        • 自定义的中间件
      • GitHub源码链接:
      相关产品与服务
      消息队列 TDMQ
      消息队列 TDMQ (Tencent Distributed Message Queue)是腾讯基于 Apache Pulsar 自研的一个云原生消息中间件系列,其中包含兼容Pulsar、RabbitMQ、RocketMQ 等协议的消息队列子产品,得益于其底层计算与存储分离的架构,TDMQ 具备良好的弹性伸缩以及故障恢复能力。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档