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

public class ValuesController : ControllerBase

{

}

На заметку! В среде Visual Studio для контроллеров предусмотрены шаблоны. Чтобы получить к ним доступ, щелкните правой кнопкой мыши на имени каталога Controllers в проекте AutoLot.Api, выберите в контекстном меню пункт AddController (Добавить►Контроллер) и укажите шаблон MVC Controller — Empty (Контроллер MVC — Пустой).

В коде устанавливается маршрут для контроллера с использованием значения (api) и маркера ([controller]). Такой шаблон маршрута будет соответствовать URL наподобие www.skimedic.com/api/values. Атрибут ApiController выбирает несколько специфичных для API средств (раскрываются в следующем разделе). Наконец, класс контроллера наследуется от ControllerBase. Как обсуждалось в главе 29, в инфраструктуре ASP.NET Core все типы контроллеров, доступные в классической версии ASP.NET, были объединены в один класс по имени Controller с базовым классом ControllerBase. Класс Controller обеспечивает функциональность, специфичную для представлений ("V" в MVC), тогда как ControllerBase предлагает оставшуюся базовую функциональность для приложений в стиле MVC.

Существует несколько способов возвращения содержимого в формате JSON из метода действия. Все приведенные далее примеры возвращают те же самые данные JSON с кодом состояния 200. Различия практически полностью стилистические. Добавьте в свой класс ValuesController следующий код:

[HttpGet]

public IActionResult Get()

{

  return Ok(new string[] { "value1", "value2" });

}

[HttpGet("one")]

public IEnumerable Get1()

{

  return new string[] { "value1", "value2" };

}

[HttpGet("two")]

public ActionResult> Get2()

{

  return new string[] { "value1", "value2" };

}

[HttpGet("three")]

public string[] Get3()

{

  return new string[] { "value1", "value2" };

}

[HttpGet("four")]

public IActionResult Get4()

{

    return new JsonResult(new string[] { "value1", "value2" });

}

Чтобы протестировать код, запустите приложение AutoLot.Api; вы увидите список всех методов из ValuesController в пользовательском интерфейсе (рис. 30.1).

Вспомните, что при определении маршрутов суффикс Controller отбрасывается из имен маршрутов, поэтому конечные точки в ValuesController сопоставляются с Values, а не с ValuesController.

Для выполнения одного из методов щелкните на кнопке GET, на кнопке Try it out (Опробовать) и на кнопке Execute (Выполнить). После выполнения метода пользовательский интерфейс обновится, чтобы отобразить результаты; наиболее важная часть пользовательского интерфейса Swagger показана на рис. 30.2.

Вы увидите, что выполнение каждого метода приводит к получению тех же самых результатов JSON.

<p id="AutBody_Root1411"><strong>Атрибут ApiController</strong></p>

Атрибут ApiController, появившийся в версии ASP.NET Core 2.1, в сочетании с классом ControllerBase обеспечивает правила, соглашения и линии поведения, специфичные для REST. Соглашения и линии поведения рассматриваются в последующих разделах.

<p id="AutBody_Root1412"><strong>Обязательность маршрутизации с помощью атрибутов</strong></p>

При наличии атрибута ApiController контроллер обязан использовать маршрутизацию с помощью атрибутов. Это просто принудительное применение того, что многие расценивают как установившуюся практику.

<p id="AutBody_Root1413"><strong>Автоматические ответы с кодом состояния 400</strong></p>

Если есть проблема с привязкой модели, то действие будет автоматически возвращать код состояния HTTP 400 (Bad Request), что заменяет следующий код:

if (!ModelState.IsValid)

{

  return BadRequest(ModelState);

}

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

{

  "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",

  "title": "One or more validation errors occurred.",

  "status": 400,

  "traceId": "|7fb5e16a-4c8f23bbfc974667.",

  "errors": {

    "": [

      "A non-empty request body is required."

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных