Проблема как минимум в два раза. Во-первых, расширения API Explorer из API Versioning предоставляют параметру version значение по умолчанию, но многие генераторы Swagger / OpenAPI (такие как Swashbuckle) все еще не соблюдают его. Если вы хотите включить это поведение, вам нужен пользовательский IOperationFilter , который делает что-то с эффектом:
var parameter = operation.Parameters.First(p => p.Name == "version");
var description = context.ApiDescription.ParameterDescriptions.First(p => p.Name == "version");
if (parameter.Schema.Default == null && description.DefaultValue != null)
{
parameter.Schema.Default = new OpenApiString(description.DefaultValue.ToString());
}
Вы можете найти полный сквозной пример в API Версионное хранилище в: SwaggerDefaultValues.cs
Поскольку управление версиями осуществляется по сегменту URL, если вы хотите встроить его в шаблон маршрута без соответствующего параметра, вам нужно только настроить расширения API Explorer сделать это следующим образом:
services.AddVersionedApiExplorer(options => options.SubstituteApiVersionInUrl = true);
Этот параметр только применяется к методу управления версиями сегмента URL.
Полный пример сквозного Swashbuckle с версионированием API можно найти внутри Startup.cs внутри репо.