Для выполнения одного из методов щелкните на кнопке GET
, на кнопке Try it out (Опробовать) и на кнопке Execute (Выполнить). После выполнения метода пользовательский интерфейс обновится, чтобы отобразить результаты; наиболее важная часть пользовательского интерфейса Swagger показана на рис. 30.2.Вы увидите, что выполнение каждого метода приводит к получению тех же самых результатов JSON.
Атрибут ApiController
Атрибут ApiController
ControllerBase обеспечивает правила, соглашения и линии поведения, специфичные для REST. Соглашения и линии поведения рассматриваются в последующих разделах.Обязательность маршрутизации с помощью атрибутов
При наличии атрибута ApiController
Автоматические ответы с кодом состояния 400
Если есть проблема с привязкой модели, то действие будет автоматически возвращать код состояния HTTP 400 (Bad Request), что заменяет следующий код:
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
Для выполнения показанной выше проверки инфраструктура ASP.NET Core использует фильтр действий ModelStatelnvalidFilter
{
"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."
]
}
}
Такое поведение можно отключить через конфигурацию в методе ConfigureServices
Startup:services.AddControllers
.ConfigureApiBehaviorOptions(options =>
{
options.SuppressModelStateInvalidFilter = true;
});
Выведение источников для привязки параметров
Механизм привязки моделей будет логически выводить источники извлечения значений на основе соглашений, описанных в табл. 30.1.
Такое поведение можно отключить через конфигурацию в методе Configure Services
Startup:services.AddControllers.ConfigureApiBehaviorOptions(options =>
{
// Подавить все выведение источников для привязки.
options.SuppressInferBindingSourcesForParameters= true;
// Подавить выведение типа содержимого multipart/form-data.
options. SuppressConsumesConstraintForFormFileParameters = true;
});
Детальные сведения о проблемах для кодов состояния ошибок
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
= new Dictionary
}
Чтобы протестировать это поведение, добавьте в ValuesController
[HttpGet("error")]
public IActionResult Error
{
return NotFound;
}
Запустите приложение и посредством пользовательского интерфейса Swagger выполните новую конечную точку error
traceId будет другим):{
"type": "https://tools.ietf.org/html/rfc7231#section-6.5.4",
"title": "Not Found",
"status": 404,
"traceId": "00-9a609e7e05f46d4d82d5f897b90da624-a6484fb34a7d3a44-00"
}
Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT