• asp.net core middleware


    测试用中间件

      // 需要安装Dynamic.Json
      // install-package Dynamic.Json
    
        public class CheckMiddleware
        {
            private RequestDelegate Next { get; init; }
            public CheckMiddleware(RequestDelegate next)
            {
                Next = next;
            }
    
            public async Task Invoke(HttpContext context)
            {
                string password = context.Request.Query["password"];
    
                if (password == "123")
                {
                    if (context.Request.HasJsonContentType())
                    {
                        using (Stream stream = context.Request.BodyReader.AsStream())
                        {
                            dynamic dynamic = await DJson.ParseAsync(stream);
                            context.Items["BodyJson"] = dynamic;
                        }
    
                        await Next.Invoke(context);
                    }
                }
                else
                    context.Response.StatusCode = 401;
            }
        }
    

    只对"/test"使用该中间件

    app.Map("/test", pipebuilder =>
    {
        pipebuilder.UseMiddleware<CheckMiddleware>();
        pipebuilder.Run(async context =>
        {
            object? obj = context.Items["BodyJson"];
    
            if (obj != null)
                await context.Response.WriteAsync($"body: {obj}");
            await context.Response.WriteAsync("Run<br/>");
        });
    });
    

    测试

    POST https://localhost:7132/test?password=123 HTTP/1.1
    content-type: application/json
    
    {
        "name": "sample",
        "time": "Wed, 21 Oct 2015 18:27:50 GMT"
    }
    ###
    

    结果

    HTTP/1.1 200 OK
    Connection: close
    Date: Tue, 15 Feb 2022 06:44:18 GMT
    Server: Kestrel
    Transfer-Encoding: chunked
    
    body: {
        "name": "sample",
        "time": "Wed, 21 Oct 2015 18:27:50 GMT"
    }Run<br/>
    
  • 相关阅读:
    周六,晴转雨
    时间概念
    2014-7-24-早
    2014-7-22
    [SPM_LAB]持续集成实验
    [软件测试_LAB2]使用Selenium进行自动化测试
    [软件测试_hw3]路径覆盖测试
    [软件测试_LAB1]安装junit和hamcrest及其使用
    [软件测试_hw2]Failure&Error
    [SPM_hw1]记一次项目经历
  • 原文地址:https://www.cnblogs.com/mryux/p/15896504.html
Copyright © 2020-2023  润新知