ASP.Net Core API 学习の中间件

一、中间件的创建

中间件功能的本质是筛选器,请求管道的拦截处理。形式上体现为一个委托。当然委托的载体是一个类。

中间件的写法是固定的。

构造方法中应该传入委托链(下个中间件的委托)

        private RequestDelegate _next;

        public TestMiddleware(RequestDelegate next) 
        {
            _next = next;
        }

中间件注册后,会传入一个委托,这个委托就是next,传入进来后就是为了在执行完本次方法后,触发下个中间件的调用。

调用方法(本次以异步为例)

        public async Task InvokeAsync(HttpContext context) 
        {
            //需要进行的处理 
            await context.Response.WriteAsync("just a test!");
            await _next.Invoke(context);
        }

使用中间件,在Startup.cs文件中调用中间件类

       app.UseMiddleware<TestMiddleware>();

注意调用顺序。

二、中间价扩展注入方法

1、原生中间件app.Use();

一般试用于功能比较简单功能,不会主动短路请求管道,也不会主动调用下一个中间件,要借助await next.Invoke();

            app.Use(next=> 
            {
                return context=>
                {

                    return context.Response.WriteAsync("just a test!!");
                };
            });

 

2、终止中间件app.Run(),会短路后续中间件。

            app.Run(context =>{
                    return Task.CompletedTask;
                });

3、路径中间件

            app.Map("/api",builder=> {
                builder.UseMiddleware<TestMiddleware>();
            });

以api结束的调用路径,会访问此中间件,并且无法切回原来路径。

三、.net core原生中间件,可以在项目中Nueget获得

 

posted @ 2020-03-26 19:02  卖雨伞的小男孩  阅读(227)  评论(0编辑  收藏  举报