#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 это дает:
С URL-адресом, являющимся:
apiv1fruit
Я хочу ввести Area
в маршрут API по атрибутам на контроллерах:
[ApiVersion("2.0")]
[Area("Private")]
Так что файлы определения OpenAPI также разделяются по областям:
С 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
.