zoukankan      html  css  js  c++  java
  • 常规中间件(Conventional Middleware) 之 内联中间件(in-line middleware)

    可以使用Run, Map, Use,MapWhen,UseWhen 等扩展方法来实现。

    简单介绍下,这几个方法的区别:

    1 有回路,意思是请求可以接着往下执行,然后原路返回。

    Use, UseWhen

    2 无回路,请求到当前为止

    Run,Map,MapWhen

    下面来个小案例

    在Startup文件中的

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
      if (env.IsDevelopment())
      {
        app.UseDeveloperExceptionPage();
      }


      app.Use( async(context,next)=> {
        await next();
        await context.Response.WriteAsync("1");
      });

      app.UseWhen(context => {
        return context.Request.Query.Keys.Contains("a");
      }, builder =>
      {
        builder.Use(async (context, next) => {
          await next();
          await context.Response.WriteAsync("2");
        });
      });

      app.Map("/k", builder =>
      {
        builder.Use(async (c, n) =>
        {
          await n();
          await c.Response.WriteAsync("3");
        });

      });

      app.MapWhen(context => {
        return context.Request.Query.Keys.Contains("b");
      }, builder =>
      {
        builder.Run(async c =>
        {
          await c.Response.WriteAsync("4");
        });
      });

      app.Run(async c =>
      {
        await c.Response.WriteAsync("5");
      });

      //省略其他……

    }

    试试各种不同的输出

    http://localhost:5000/

    51

    http://localhost:5000/?a=1

    521

    http://localhost:5000/k

    31

    http://localhost:5000/k?a=1

    321

    http://localhost:5000/k?a=1&b=1

    321

    http://localhost:5000/?a=1&b=1

    421

    http://localhost:5000/k?b=1

    31

    ----------------------------

    小提示: Map或MapWhen里面 可以使用多个Use方法和一个Run方法

  • 相关阅读:
    AC自动机---病毒侵袭
    线段树或树状数组---Flowers
    AC自动机---Keywords Search
    AC自动机基础知识讲解
    线段树---Atlantis
    状态压缩DP---Hie with the Pie
    状态压缩DP--Mondriaan's Dream
    【PAT-并查集-水题】L2-007-家庭房产
    【PAT-一道看着很难的水题】L2-023. 图着色问题
    【二叉搜索树】PAT-天梯赛- L2-004. 这是二叉搜索树吗?
  • 原文地址:https://www.cnblogs.com/xiaonanmu/p/14220425.html
Copyright © 2011-2022 走看看