Можете объяснить, что представляет собой Action фильтр в контексте разработки веб-приложений?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Action filter — это механизм, который позволяет выполнить дополнительную логику до и после вызова action-метода контроллера. Обычно его используют для кросс-секционных задач: логирования, валидации, авторизации, кэширования. Важно показать, что фильтр помогает не размазывать одинаковый код по контроллерам.
Определение:
Action filter в ASP.NET MVC / ASP.NET Core — это фильтр, который оборачивает выполнение action-метода. Он может сработать до выполнения action и после него, а также повлиять на результат выполнения, например изменить response или отменить дальнейшую обработку.
Такие фильтры удобны, когда нужно централизованно добавить поведение для нескольких действий контроллера без дублирования кода.
Пример использования:
Например, можно написать фильтр, который логирует вход и выход из action.
using Microsoft.AspNetCore.Mvc.Filters;
using Microsoft.Extensions.Logging;
public class LogActionFilter : IActionFilter
{
private readonly ILogger<LogActionFilter> _logger;
public LogActionFilter(ILogger<LogActionFilter> logger)
{
_logger = logger;
}
public void OnActionExecuting(ActionExecutingContext context)
{
_logger.LogInformation("Action started: {ActionName}", context.ActionDescriptor.DisplayName);
}
public void OnActionExecuted(ActionExecutedContext context)
{
_logger.LogInformation("Action finished: {ActionName}", context.ActionDescriptor.DisplayName);
}
}
Использование на контроллере:
using Microsoft.AspNetCore.Mvc;
[ServiceFilter(typeof(LogActionFilter))]
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
}
Пояснение кода:
IActionFilter задаёт два метода: OnActionExecuting и OnActionExecuted.
OnActionExecutingвызывается перед входом в action.- Внутри можно проверить параметры запроса, записать лог, отменить выполнение action через
context.Result. OnActionExecutedвызывается после завершения action.- Здесь обычно фиксируют результат выполнения, ошибки или метрики времени.
В примере фильтр логирует имя action до и после выполнения, а контроллер подключает фильтр через ServiceFilter.
Ключевые моменты:
- Action filter применяется к action-методам контроллера и оборачивает их выполнение.
- Основные сценарии: логирование, валидация, авторизация, кэширование, измерение времени.
- Фильтр позволяет вынести повторяющуюся логику из контроллеров.
- В
OnActionExecutingможно изменить ход выполнения запроса, установивcontext.Result. - В
OnActionExecutedможно обработать результат или зафиксировать ошибку после выполнения action.