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

Какими методами реализуется маршрутизация в приложениях на ASP.NET?

Компании, где спрашивали
AstonAston

Ответ от нейросети

sobes.tech AI

Что хотят услышать интервьюеры:

В ASP.NET маршрутизация обычно реализуется несколькими подходами: через convention-based routing, через attribute routing и, в современных приложениях, через endpoint routing. Важно понимать, как запрос сопоставляется с контроллером, экшеном или другим обработчиком. Также полезно знать, что маршруты могут быть как явно заданными, так и строиться по шаблонам.

Определение:

Маршрутизация — это механизм сопоставления входящего URL с конкретным обработчиком в приложении. В ASP.NET она определяет, какой контроллер, action или endpoint будет вызван для запроса, а также может извлекать параметры из пути.

Основные методы реализации маршрутизации:

  • Convention-based routing — маршруты задаются централизованно по шаблону.
  • Attribute routing — маршрут задаётся атрибутами прямо на контроллерах и методах.
  • Endpoint routing — современный механизм, где маршруты и endpoints регистрируются в пайплайне приложения.

Пример использования:

// Convention-based routing
app.MapControllerRoute(
    name: "default",
    pattern: "{controller=Home}/{action=Index}/{id?}");

// Attribute routing
[Route("products")]
public class ProductsController : Controller
{
    [HttpGet("{id}")]
    public IActionResult Details(int id)
    {
        return Ok($"Product {id}");
    }
}

Пояснение кода:

В первом примере маршрут задаётся через шаблон: если в URL не указаны controller и action, будут использованы значения по умолчанию Home и Index. Параметр id является необязательным.

Во втором примере маршрут задан атрибутом [Route("products")] на уровне контроллера и [HttpGet("{id}")] на уровне метода. В результате запрос вида /products/15 попадёт в метод Details, а значение 15 будет передано в параметр id.

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

  • Convention-based routing удобен для стандартной структуры приложения и централизованной настройки.
  • Attribute routing даёт более точный контроль над URL и часто удобнее для API.
  • Endpoint routing — актуальный механизм в современных версиях ASP.NET Core.
  • Маршруты могут содержать параметры, обязательные и необязательные сегменты.
  • Важно понимать порядок сопоставления маршрутов, чтобы избежать конфликтов.
  • Выбор метода зависит от архитектуры приложения и требований к читаемости URL.