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
// 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();
});
}
自定义的中间件
app.Run(async context =>
{
await context.Response.WriteAsync("my middleware");
});
启动程序,输出如下:
my middleware
使用 app.Run 之后管道中止,不会继续执行 app.UseEndpoints,如果想要继续执行,可以使用 app.Use 并调用 next()
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");
});
启动程序,输出如下:
my middleware 1my middleware 2
GitHub源码链接:
https://github.com/MINGSON666/Personal-Learning-Library/tree/main/ArchitectTrainingCamp/HelloApi