Файлы определения OpenAPI на версию для каждой области в .NET Core с использованием Swashbuckle

#c# #.net-core #swagger #swashbuckle.aspnetcore

#c# #.net-core #swagger #swashbuckle.aspnetcore

Вопрос:

Я использую Microsoft.AspNetCore.Mvc.Versioning с помощью Swashbuckle, а Swashbuckle генерирует файл определения для каждой версии с использованием конфигурации запуска:

 app.UseSwaggerUI(c =>
{
    // generate endpoint for each version
    foreach (var description in provider.ApiVersionDescriptions)
    {
        c.SwaggerEndpoint($"/swagger/{description.GroupName}/swagger.json", description.GroupName.ToUpperInvariant());
    }
});
  

В пользовательском интерфейсе Swagger это дает:
Определение для каждой версии в SwaggerUI

С URL-адресом, являющимся:

 apiv1fruit
  

Я хочу ввести Area в маршрут API по атрибутам на контроллерах:

 [ApiVersion("2.0")]
[Area("Private")]
  

Так что файлы определения OpenAPI также разделяются по областям:
Определения Swagger для каждой области

С URL:

 apipublicv1fruit
apiprivatev1fruit
  

Как я могу этого добиться?

Ответ №1:

Я думаю, что это может помочь вам, хотя, боюсь, это не полное исправление.

https://github.com/microsoft/aspnet-api-versioning/issues/516#issuecomment-561348964

Кажется, что если вы используете параметры format ‘.GroupNameFormat = «‘v’VVVV»;’ Тогда последняя часть управления версиями может быть буквенно-цифровой, т. Е. вы должны иметь возможность записать версию следующим образом;

[apiVersion( «3.0.session» )]
[apiVersion( «3.0.разработка» )]

Далее в протекторе другой предлагает конфигурацию подстановки, которая позволит вам переключать имена таким образом, чтобы у вас были поменяны местами версии и имена в документах swagger, т. Е. чтобы apiVersion 3.0.session стал session-v3.0 .