Мідлвар (Middleware) — це компонент, який вбудовується в конвеєр програми для обробки запитів та відповідей.
Мідлвари з’єднуються ланцюжком і виконуються в тій послідовності, в якій вони були додані.
Мідлвар — Run
app.Run( )
app.Run(async (HttpContext context) =>
{
//код
});
Метод-розширення під назвою “Run” використовується для виконання термінуючого / короткозамкненого мідлвара, який не пересилає запит наступному мідлвару.
Ланцюжок Мідлварів
app.Use( )
app.Use(async (HttpContext context, RequestDelegate next) =>
{
//логіка до
await next(context);
//логіка після
});
Метод-розширення під назвою “Use” використовується для виконання нетермінуючого / нескоротозамкненого мідлвара, який може або не може переслати запит наступному мідлвару.
Клас Мідлвару
Клас мідлвару використовується для того, щоб відокремити логіку мідлвару від лямбда-виразу до окремого / багаторазового класу.
class MiddlewareClassName : IMiddleware
{
public async Task InvokeAsync(HttpContext context, RequestDelegate next)
{
//логіка до
await next(context);
//логіка після
}
}
Розширення Мідлвару
class MiddlewareClassName : IMiddleware
{
public async Task InvokeAsync(HttpContext context,RequestDelegate next)
{
//логіка до
await next(context);
//логіка після
}
});
Метод-розширення мідлвару використовується для виклику мідлвару через один виклик методу.
Звичний Мідлвар
class MiddlewareClassName
{
private readonly RequestDelegate _next;
public MiddlewareClassName(RequestDelegate next)
{
_next = next;
}
public async Task InvokeAsync(HttpContext context)
{
//логіка до
await _next(context);
//логіка після
}
});
static class ClassName
{
public static IApplicationBuilder ExtensionMethodName(this IApplicationBuilder app)
{
return app.UseMiddleware();
}
}
Правильний Порядок Мідлварів
Мідлвар — UseWhen
app.UseWhen( )
app.UseWhen(
context => { return boolean; },
app =>
{
//додавайте ваші мідлвари
}
);
Метод-розширення під назвою “UseWhen” використовується для виконання гілки мідлвару лише коли вказана умова є істинною.
Дякуємо за прочитане!
Слідкуйте за нами: @ilhanbal577
Автор: İlhan Bal
Код написав: İlhan Bal
Перекладено з: Middleware