Рейтинговые книги
Читем онлайн Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 604 605 606 607 608 609 610 611 612 ... 642

Модифицируйте метод AddControllers(), добавив специальный фильтр:

services

  .AddControllers(<b>config =&gt; config.Filters.Add(</b>

<b>      new CustomExceptionFilterAttribute(_env))</b>)

  .AddJsonOptions(options =&gt;

  {

    options.JsonSerializerOptions.PropertyNamingPolicy = null;

    options.JsonSerializerOptions.WriteIndented = true;

  })

  .ConfigureApiBehaviorOptions(options =&gt;

  {

  ...

  });

Тестирование фильтра исключений

Чтобы протестировать фильтр исключений, откройте файл WeatherForecastController.cs и обновите метод действия Get() показанным ниже кодом:

[HttpGet]

public IEnumerable&lt;WeatherForecast&gt; Get()

{

  _logger.LogAppWarning(&quot;This is a test&quot;);

<b>  throw new Exception(&quot;Test Exception&quot;);</b>

  ...

}

Запустите приложение и испытайте метод с использованием Swagger. Результаты, отображенные в пользовательском интерфейсе Swagger должны соответствовать следующему выводу (трассировка стека приведена с сокращениями):

{

  &quot;Error&quot;: &quot;General Error.&quot;,

  &quot;Message&quot;: &quot;Test Exception&quot;,

  &quot;StackTrace&quot;: &quot;   at AutoLot.Api.Controllers.WeatherForecastController.Get() in

D:\Projects\Books\csharp9-wf\Code\New\Chapter_30\AutoLot.Api\Controllers\

WeatherForecastController.cs:line 31rn  &quot;

}

Добавление поддержки запросов между источниками

Приложения API должны иметь политики, которые разрешают или запрещают взаимодействовать с ними клиентам, обращающимся из другого сервера. Такие типы запросов называются запросами между источниками (cross-origin requests — CORS). Хотя в этом нет необходимости при работе локально на своей машине для всего мира ASP.NET Core, поддержка CORS нужна фреймворкам JavaScript, которые желают взаимодействовать с вашим приложением API, даже когда они все вместе функционируют локально.

На заметку! Дополнительные сведения о поддержке CORS ищите в документации по ссылке https://docs.microsoft.com/ru-ru/aspnet/core/security/cors.

Создание политики CORS

Инфраструктура ASP.NET Core располагает развитой поддержкой конфигурирования CORS, включая методы для разрешения/запрещения заголовков, методов, источников, учетных данных и многого другого. В этом примере все будет оставлено максимально открытым.

(window.adrunTag = window.adrunTag || []).push({v: 1, el: 'adrun-4-390', c: 4, b: 390})

Конфигурирование начинается с создания политики CORS и добавления ее в коллекцию служб. Политика имеет имя (оно будет использоваться в методе Configure()), за которым следуют правила. Далее будет сознана политика по имени AllowAll, разрешающая все. Добавьте в метод ConfigureServices() класса Startup следующий код:

services.AddCors(options =&gt;

{

  options.AddPolicy(&quot;AllowAll&quot;, builder =&gt;

  {

   builder

      .AllowAnyHeader()

      .AllowAnyMethod()

      .AllowAnyOrigin();

  });

});

Добавление политики CORS в конвейер обработки HTTP

Наконец, политику CORS необходимо добавить в конвейер обработки HTTP. Поместите между вызовами арр. UseRouting() и арр.UseEndpoints() в методе Configure() класса Startup показанную ниже строку (выделенную полужирным):

public void Configure(

  IApplicationBuilder app,

  IWebHostEnvironment env,

  ApplicationDbContext context)

{

  ...

  // Включить маршрутизацию.

  app.UseRouting();

<b>  // Добавить политику CORS.</b>

<b>  app.UseCors(&quot;AllowAll&quot;);</b>

  // Включить проверки авторизации.

  app.UseAuthorization();

  ...

}

Резюме

В главе вы продолжили изучение ASP.NET Core. Сначала вы узнали о возвращении данных JSON из методов действий, после чего взглянули на атрибут ApiController и его влияние на контроллеры API. Затем вы обновили общую реализацию Swashbuckle, чтобы включить XML-документацию приложения и информацию из атрибутов методов действий.

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

В следующей главе вы завершите построение веб-приложения ASP.NET Core, т.е. AutoLot.Mvc.

Глава 31

Создание приложений MVC с помощью ASP.NET Core

В главе 29 была заложена основа ASP.NET Core, а в главе 30 вы построили службу REST. В этой главе вы будете создавать веб-приложение с использованием паттерна МУС. Все начинается с помещения "V" обратно в "МУС".

1 ... 604 605 606 607 608 609 610 611 612 ... 642
На этой странице вы можете бесплатно читать книгу Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю бесплатно.
Похожие на Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю книги

Оставить комментарий