Sobes.tech
Назад к вопросам
Junior — Middle
60

Можете объяснить, что представляет собой 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.

  1. OnActionExecuting вызывается перед входом в action.
  2. Внутри можно проверить параметры запроса, записать лог, отменить выполнение action через context.Result.
  3. OnActionExecuted вызывается после завершения action.
  4. Здесь обычно фиксируют результат выполнения, ошибки или метрики времени.

В примере фильтр логирует имя action до и после выполнения, а контроллер подключает фильтр через ServiceFilter.

Ключевые моменты:

  • Action filter применяется к action-методам контроллера и оборачивает их выполнение.
  • Основные сценарии: логирование, валидация, авторизация, кэширование, измерение времени.
  • Фильтр позволяет вынести повторяющуюся логику из контроллеров.
  • В OnActionExecuting можно изменить ход выполнения запроса, установив context.Result.
  • В OnActionExecuted можно обработать результат или зафиксировать ошибку после выполнения action.