]

  }

}

Такое поведение можно отключить через конфигурацию в методе ConfigureServices() класса Startup:

services.AddControllers()

    .ConfigureApiBehaviorOptions(options =>

    {

        options.SuppressModelStateInvalidFilter = true;

    });

<p id="AutBody_Root1414"><strong>Выведение источников для привязки параметров</strong></p>

Механизм привязки моделей будет логически выводить источники извлечения значений на основе соглашений, описанных в табл. 30.1.

Такое поведение можно отключить через конфигурацию в методе Configure Services() класса Startup:

services.AddControllers().ConfigureApiBehaviorOptions(options =>

{

  // Подавить все выведение источников для привязки.

  options.SuppressInferBindingSourcesForParameters= true;

  // Подавить выведение типа содержимого multipart/form-data.

  options. SuppressConsumesConstraintForFormFileParameters = true;

});

<p id="AutBody_Root1415"><strong>Детальные сведения о проблемах для кодов состояния ошибок</strong></p>

 ASP.NET Core трансформирует результат ошибки (состояние 400 или выше) в результат с помощью типа ProblemDetails, который показан ниже:

public class ProblemDetails

{

  public string Type { get; set; }

  public string Title { get; set; }

  public int? Status { get; set; }

  public string Detail { get; set; }

  public string Instance { get; set; }

  public IDictionary Extensions { get; }

    = new Dictionary(StringComparer.Ordinal);

}

Чтобы протестировать это поведение, добавьте в ValuesController еще один метод:

[HttpGet("error")]

public IActionResult Error()

{

  return NotFound();

}

Запустите приложение и посредством пользовательского интерфейса Swagger выполните новую конечную точку error. Результатом по-прежнему будет код состояния 404 (Not Found), но в теле ответа возвратится дополнительная информация. Ниже приведен пример ответа (ваше значение traceId будет другим):

{

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

  "title": "Not Found",

  "status": 404,

  "traceId": "00-9a609e7e05f46d4d82d5f897b90da624-a6484fb34a7d3a44-00"

}

Такое поведение можно отключить через конфигурацию в методе ConfigureServices() класса Startup:

services.AddControllers()

  .ConfigureApiBehaviorOptions(options =>

  {

    options.SuppressMapClientErrors = true;

  });

Когда поведение отключено, вызов конечной точки error возвращает код состояния 404 без какой-либо дополнительной информации.

<p id="AutBody_Root1416"><strong>Обновление настроек Swagger/OpenAPI</strong></p>

Продукт Swagger (также известный как OpenAPI) является стандартом с открытым кодом для документирования служб REST, основанных на API. Два главных варианта для добавления Swagger к API-интерфейсам ASP.NET Core — Swashbuckle и NSwag. Версия ASP.NET Core 5 теперь включает Swashbuckle в виде части шаблона нового проекта. Документация swagger.json, сгенерированная для AutoLot.Api, содержит информацию по сайту, по каждой конечной точке и по любым объектам, задействованным в конечных точках.

Пользовательский интерфейс Swagger базируется на веб-интерфейсе и позволяет интерактивным образом исследовать конечные точки приложения, а также тестировать их (как делалось ранее в этой главе). Его можно расширить, добавляя документацию в сгенерированный файл swagger.json.

<p id="AutBody_Root1417"><strong>Обновление обращений к Swagger в классе Startup</strong></p>

Стандартный шаблон проекта API добавляет код для генерирования файла swagger.json в метод ConfigureService() класса Startup:

services.AddSwaggerGen(c =>

{

  c.SwaggerDoc("v1", new OpenApiInfo { Title = "AutoLot.Api", Version = "v1" });

});

Первое изменение стандартного кода предусматривает добавление метаданных к OpenApiInfo. Модифицируйте вызов AddSwaggerGen() следующим образом, чтобы обновить заголовок и добавить описание и сведения о лицензии:

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

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