Чтение онлайн

на главную

Жанры

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

// Подавить выведение типа содержимого 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<string, object> Extensions { get; }

= new Dictionary<string, object>(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 без какой-либо дополнительной информации.

Обновление настроек Swagger/OpenAPI

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

swagger.json
, сгенерированная для
AutoLot.Api
,
содержит информацию по сайту, по каждой конечной точке и по любым объектам, задействованным в конечных точках.

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

swagger.json
.

Обновление обращений к Swagger в классе Startup

Стандартный шаблон проекта API добавляет код для генерирования файла

swagger.json
в метод
ConfigureService
класса
Startup
:

services.AddSwaggerGen(c =>

{

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

});

Первое изменение стандартного кода предусматривает добавление метаданных к

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

services.AddSwaggerGen(c =>

{

c.SwaggerDoc("v1",

new OpenApiInfo

{

Title = "AutoLot Service",

Version = "v1",

Description = "Service to support the AutoLot dealer site",

License = new OpenApiLicense

{

Name = "Skimedic Inc",

Url = new Uri("http://www.skimedic.com")

}

});

});

Следующий шаг связан с переносом вызовов

UseSwagger
и
UseSwaggerUI
из блока, предназначенного только для среды разработки, в главный путь выполнения внутри метода
Configure
. Кроме того, поменяйте заголовок
"AutoLot.Api vl"
на
"AutoLot Service vl"
.

public void Configure(IApplicationBuilder app, IWebHostEnvironment env,

ApplicationDbContext context)

{

if (env.IsDevelopment)

{

// Если среда разработки, тогда отображать отладочную информацию.

app.UseDeveloperExceptionPage;

// Первоначальный код:

// app.UseSwagger;

Поделиться:
Популярные книги

Моя на одну ночь

Тоцка Тала
Любовные романы:
современные любовные романы
короткие любовные романы
5.50
рейтинг книги
Моя на одну ночь

Черный Маг Императора 8

Герда Александр
8. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Черный Маг Императора 8

Измена. Отбор для предателя

Лаврова Алиса
1. Отбор для предателя
Фантастика:
фэнтези
5.00
рейтинг книги
Измена. Отбор для предателя

Кодекс Крови. Книга II

Борзых М.
2. РОС: Кодекс Крови
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Крови. Книга II

Шаг в бездну

Муравьёв Константин Николаевич
3. Перешагнуть пропасть
Фантастика:
фэнтези
космическая фантастика
7.89
рейтинг книги
Шаг в бездну

Часовая битва

Щерба Наталья Васильевна
6. Часодеи
Детские:
детская фантастика
9.38
рейтинг книги
Часовая битва

Вечная Война. Книга II

Винокуров Юрий
2. Вечная война.
Фантастика:
юмористическая фантастика
космическая фантастика
8.37
рейтинг книги
Вечная Война. Книга II

Хроники странного королевства. Вторжение. (Дилогия)

Панкеева Оксана Петровна
110. В одном томе
Фантастика:
фэнтези
9.38
рейтинг книги
Хроники странного королевства. Вторжение. (Дилогия)

Часовой ключ

Щерба Наталья Васильевна
1. Часодеи
Фантастика:
фэнтези
9.36
рейтинг книги
Часовой ключ

Инвестиго, из медика в маги

Рэд Илья
1. Инвестиго
Фантастика:
фэнтези
городское фэнтези
попаданцы
5.00
рейтинг книги
Инвестиго, из медика в маги

Кротовский, может, хватит?

Парсиев Дмитрий
3. РОС: Изнанка Империи
Фантастика:
попаданцы
альтернативная история
аниме
7.50
рейтинг книги
Кротовский, может, хватит?

Драконий подарок

Суббота Светлана
1. Королевская академия Драко
Любовные романы:
любовно-фантастические романы
7.30
рейтинг книги
Драконий подарок

Очешуеть! Я - жена дракона?!

Амеличева Елена
Фантастика:
юмористическая фантастика
5.43
рейтинг книги
Очешуеть! Я - жена дракона?!

Идеальный мир для Лекаря 9

Сапфир Олег
9. Лекарь
Фантастика:
боевая фантастика
юмористическое фэнтези
6.00
рейтинг книги
Идеальный мир для Лекаря 9