Промежуточное ПО для ASP.NET Core MVC 2.2 - PullRequest
0 голосов
/ 12 декабря 2018

Мне бы хотелось простое промежуточное ПО, которое я могу использовать для объединения нескольких запросов в один запрос и возврата результата в виде одного ответа массива.

Я не хочу использовать OData, потому что он слишком тяжелый, плюс мне это не нравится.

Я понятия не имею, как я могу разбить один HttpContext на несколько маленьких внутренних сабHttpContext's.

Это моя попытка:

    public static IApplicationBuilder BatchRequest(this IApplicationBuilder app)
    {
        app.Map("/api/batch", builder =>
        {
            builder.Use(async (context, next) =>
            {
                string[] paths = (context.Request.Query.Get("path") as StringValues?) ?? new string[] { };
                Stream originalBody = context.Response.Body;
                RecyclableMemoryStreamManager _recyclableMemoryStreamManager = new RecyclableMemoryStreamManager();

                IEnumerable<string> responses = await paths.SelectAsync(async path =>
                {
                    context.Request.Path = path;
                    MemoryStream newResponseBody = _recyclableMemoryStreamManager.GetStream();
                    context.Response.Body = newResponseBody;
                    await next.Invoke();
                    return RequestResponseLoggingMiddleware.ReadStreamInChunks(newResponseBody);
                });

                await context.Response.WriteAsync(responses.Serialize());
            });
        });

        return app;
    }

Этот пример есть, но я пока не уверен, как его использовать: https://github.com/Tornhoof/HttpBatchHandler

Пожалуйстабудь добр.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...