Izibook.club
Читать онлайн книги!
  • Главная
  • Жанры
  • Авторы
  • ТОП книг
  • ТОП авторов
  • Контакты

Язык программирования C#9 и платформа .NET5

Часть 579 из 642 Информация о книге

Маршрутизация и REST-службы ASP.NET Core

При определении маршрутов для служб ASP.NET метод действия не указывается. Вместо этого, как только контроллер обнаруживается, выполняемый метод действия базируется на методе HTTP запроса и назначениях методов HTTP методам действий. Детали будут приведены чуть позже.

Маршрутизация на основе соглашений

При маршрутизации на основе соглашений (или традиционной маршрутизации) таблица маршрутов строится в методе

UseEndpoints()
класса
Startup
. Метод
MapControllerRoute()
добавляет конечную точку в таблицу маршрутов, указывая имя, шаблон URL и любые стандартные значения для переменных в шаблоне URL. В приведенном ниже примере кода заранее определенные заполнители
{controller}
и
{action}
ссылаются на контроллер и метод действия, содержащийся в данном контроллере. Заполнитель
{id}
является специальным и транслируется в параметр (по имени
id
) для метода действия. Добавление к маркеру маршрута знака вопроса указывает на его необязательность.

app.UseEndpoints(endpoints =>

{

  endpoints.MapControllerRoute(

    name: "default",

    template: "{controller=Home}/{action=Index}/{id?}");

});

Запрашиваемый URL проверяется на соответствие с таблицей маршрутов. При наличии совпадения выполняется код, находящийся в этой конечной точке приложения. Примером URL, который мог бы обслуживаться таким маршрутом, является

Car/Delete/5
. В результате вызывается метод действия
Delete()
класса контроллера
CarController
с передачей значения
5
в параметре
id
.

В параметре

default
указано, каким образом заполнять пустые фрагменты в URL, которые содержат не все определенные компоненты. С учетом предыдущего кода, если в URL ничего не задано (например,
http://localhost:5001
), тогда механизм маршрутизации вызовет метод действия
Index()
класса
HomeController
без параметра
id
. Параметру
default
присуща поступательность, т.е. он допускает исключение справа налево. Однако пропускать части маршрута не разрешено. Ввод URL вида
http://localhost:5001/Delete/5
не пройдет сопоставление с шаблоном
{controller}/{action}/{id}
.

Механизм маршрутизации попытается отыскать первый маршрут на основе контроллера, действия, специальных маркеров и метода HTTP. Если механизм маршрутизации не может определить наилучший маршрут, тогда он сгенерирует исключение

AmbiguousMatchException
.

Обратите внимание, что шаблон маршрута не содержит протокол или имя хоста. Механизм маршрутизации автоматически добавляет в начало корректную информацию при создании маршрута и применяет метод HTTP, путь и параметры для определения соответствующей конечной точки приложения. Например, если ваш сайт запускается на

https://www.skimedic.com
, то протокол (HTTPS) и имя хоста (
www.skimedic.com
) автоматически добавляются к  маршруту при его создании (скажем,
https://www.skimedic.com/Car/Delete/5
). Для входящего запроса механизм маршрутизации использует порцию
Car/Delete/5
из URL.

Именованные маршруты

Имена маршрутов могут применяться в качестве сокращения для генерации URL изнутри приложения. Выше конечной точке было назначено имя

default
.

Маршрутизация с помощью атрибутов

При маршрутизации с помощью атрибутов маршруты определяются с использованием атрибутов C# в отношении контроллеров и их методов действий. Это может привести к более точной маршрутизации, но также увеличит объем конфигурации, поскольку для каждого контроллера и действия необходимо указать информацию маршрутизации.

Например, взгляните на приведенный ниже фрагмент кода. Четыре атрибута

Route
на методе действия
Index()
эквивалентны маршруту, который был определен ранее. Метод действия
Index()
является конечной точкой приложения для
mysite.com
,
mysite.com/Home
,
mysite.com/Home/Index
или
mysite.com/Home/Index/5
.

public class HomeController : Controller

{

<b>  [Route(&quot;/&quot;)]</b>

<b>  [Route(&quot;/Home&quot;)]</b>

<b>  [Route(&quot;/Home/Index&quot;)]</b>

<b>  [Route(&quot;/Home/Index/{id?}&quot;)]</b>

  public IActionResult Index(int? id)

  {

    ...

  }

}

Основное различие между маршрутизацией на основе соглашений и маршрутизацией с помощью атрибутов заключается в том, что первая охватывает приложение, тогда как вторая — контроллер с атрибутом

Route
. Если маршрутизация на основе соглашений не применяется, то каждому контроллеру понадобится определить свой маршрут, иначе доступ к нему будет невозможен. Скажем, если в таблице маршрутов не определен стандартный маршрут, тогда следующий код обнаружить не удастся, т.к. маршрутизация для контроллера не сконфигурирована:

public class CarController : Controller

{

  public IActionResult Delete(int id)

  {

    ...

  }

}

На заметку! Маршрутизацию на основе соглашений и маршрутизацию с помощью атрибутов можно использовать вместе. Если бы в методе

UseEndpoints()
был настроен стандартный маршрут контроллера (как в примере с маршрутизацией на основе соглашений), то предыдущий контроллер попал бы в таблицу маршрутов.

Перейти к странице:
Предыдущая страница
Следующая страница
Жанры
  • Военное дело 4
    • Спецслужбы 4
  • Деловая литература 209
    • Банковское дело 3
    • Деловая литература 2
    • Корпоративная культура 13
    • Личные финансы 21
    • Малый бизнес 2
    • Маркетинг, PR, реклама 47
    • О бизнесе популярно 117
    • Отраслевые издания 2
    • Управление, подбор персонала 17
    • Ценные бумаги, инвестиции 3
    • Экономика 28
  • Детективы и триллеры 2816
    • Боевики 314
    • Дамский детективный роман 22
    • Детективы 424
    • Иронические детективы 185
    • Исторические детективы 417
    • Классические детективы 226
    • Криминальные детективы 159
    • Крутой детектив 120
    • Маньяки 15
    • Медицинский триллер 2
    • Политические детективы 44
    • Полицейские детективы 237
    • Прочие Детективы 831
    • Техно триллер 3
    • Триллеры 1235
    • Шпионские детективы 101
  • Детские 506
    • Детская образовательная литература 13
    • Детская проза 167
    • Детские остросюжетные 53
    • Детские приключения 270
    • Детские стихи 21
    • Детский фольклор 1
    • Книга-игра 1
    • Прочая детская литература 78
  • Детские книги 542
    • Детская фантастика 199
    • Детские детективы 3
    • Книги для подростков 23
    • Сказки 273
  • Документальная литература 818
    • Биографии и мемуары 536
    • Военная документалистика 7
    • Искусство и Дизайн 15
    • Критика 11
    • Научпоп 9
    • Прочая документальная литература 73
    • Публицистика 260
  • Дом и Семья 217
    • Домашние животные 14
    • Здоровье и красота 34
    • Кулинария 33
    • Прочее домоводство 8
    • Развлечения 3
    • Сад и Огород 8
    • Сделай сам 2
    • Спорт 10
    • Хобби и ремесла 7
    • Эротика и секс 112
  • Драматургия 112
    • Драма 109
    • Киносценарии 3
    • Мистерия 1
    • Трагедия 1
  • Жанр не определен 8
    • Разное 8
  • Компьютеры и Интернет 15
    • Базы данных 3
    • Интернет 3
    • Программирование 1
    • Программное обеспечение 1
    • Прочая компьютерная литература 10
  • Любовные романы 26783
    • Исторические любовные романы 959
    • Короткие любовные романы 2707
    • Любовно-фантастические романы 11109
    • Остросюжетные любовные романы 1005
    • Порно 90
    • Прочие любовные романы 57
    • Слеш 417
    • Современные любовные романы 11051
    • Фемслеш 44
    • Эротика 6610
  • Научно-образовательная 379
    • Альтернативная медицина 5
    • Астрономия и Космос 7
    • Биология 33
    • Биофизика 2
    • Биохимия 2
    • Ботаника 3
    • Военная история 4
    • Геология и география 3
    • Государство и право 1
    • Детская психология 16
    • Зоология 3
    • Иностранные языки 2
    • Культурология 47
    • Литературоведение 20
    • Медицина 36
    • Обществознание 7
    • Педагогика 20
    • Политика 22
    • Прочая научная литература 58
    • Психотерапия и консультирование 52
    • Религиоведение 7
    • Секс и семейная психология 31
    • Технические науки 4
    • Физика 9
    • Философия 35
    • Химия 3
    • Экология 3
    • Юриспруденция 9
    • Языкознание 18
  • Образование 525
    • Бизнес 45
    • Биография и мемуары 46
    • Здоровье 10
    • История 298
    • Карьера 4
    • Психология 231
  • Поэзия и драматургия 43
    • Басни 2
    • Драматургия 11
    • Лирика 2
    • Поэзия 31
  • Приключения 771
    • Вестерны 14
    • Исторические приключения 426
    • Морские приключения 80
    • Природа и животные 32
    • Прочие приключения 213
    • Путешествия и география 52
  • Проза 2464
    • Антисоветская литература 5
    • Афоризмы 1
    • Военная проза 111
    • Историческая проза 325
    • Классическая проза 137
    • Контркультура 14
    • Магический реализм 97
    • Новелла 14
    • Повесть 24
    • Проза прочее 21
    • Рассказ 73
    • Роман 104
    • Русская классическая проза 73
    • Семейный роман/Семейная сага 3
    • Сентиментальная проза 10
    • Советская классическая проза 48
    • Современная проза 1893
    • Эпистолярная проза 2
    • Эпопея 5
    • Эссе, очерк, этюд, набросок 3
  • Прочее 1529
    • Газеты и журналы 7
    • Изобразительное искусство, фотография 12
    • Кино 13
    • Музыка 11
    • Подростковая литература 6
    • Театр 5
    • Фанфик 1480
  • Религия и духовность 371
    • Астрология 1
    • Буддизм 4
    • Православие 1
    • Прочая религиозная литература 4
    • Религия 24
    • Самосовершенствование 143
    • Хиромантия 1
    • Эзотерика 214
    • Язычество 1
  • Справочная литература 42
    • Прочая справочная литература 3
    • Путеводители 10
    • Руководства 12
    • Справочники 15
    • Энциклопедии 9
  • Старинная литература 157
    • Античная литература 1
    • Древневосточная литература 5
    • Мифы. Легенды. Эпос 35
    • Прочая старинная литература 117
  • Техника 2
    • Автомобили и ПДД 1
    • Архитектура 1
  • Фантастика и фентези 28901
    • Альтернативная история 4253
    • Боевая фантастика 5421
    • Героическая фантастика 1501
    • Городское фэнтези 2329
    • Готический роман 14
    • Детективная фантастика 762
    • Ироническая фантастика 102
    • Ироническое фэнтези 84
    • Историческое фэнтези 535
    • Киберпанк 322
    • Космическая фантастика 1838
    • Космоопера 57
    • ЛитРПГ 1343
    • Любовная фантастика 186
    • Любовное фэнтези 115
    • Мистика 528
    • Научная фантастика 950
    • Попаданцы 9594
    • Постапокалипсис 925
    • Сказочная фантастика 26
    • Социально-философская фантастика 559
    • Стимпанк 152
    • Технофэнтези 148
    • Ужасы 103
    • Ужасы и мистика 836
    • Фантастика 254
    • Фантастика: прочее 234
    • Фэнтези 11605
    • Эпическая фантастика 236
    • Юмористическая фантастика 1083
    • Юмористическое фэнтези 1703
  • Фольклор 7
    • Загадки 1
    • Народные сказки 5
    • Фольклор: прочее 2
  • Юмор 195
    • Анекдоты 1
    • Комедии 1
    • Прочий юмор 67
    • Сатира 3
    • Юмористическая проза 124
    • Юмористические стихи 5
Izibook.club

Бесплатная онлайн библиотека для чтения книг без регистрации с телефона или компьютера. У нас собраны последние новинки, мировые бестселлеры книжного мира.

Контакты
  • pereezdsayta@yandex.ru
Информация
  • Карта сайта
© izibook.club, 2026. | Вход
Этот сайт использует cookie для хранения данных. Продолжая пользоваться сайтом, вы даете свое согласие на работу с этими данными в соответствии с нашей политикой конфиденциальности.
Я согласен