Мне бы хотелось простое промежуточное ПО, которое я могу использовать для объединения нескольких запросов в один запрос и возврата результата в виде одного ответа массива.
Я не хочу использовать 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
Пожалуйстабудь добр.