#asp.net-core #enums #swagger
Вопрос:
Я создаю документацию по открытому API, используя Swagger для проекта .NET 5.0. В этом проекте у меня есть несколько возвращаемых перечислений, поэтому у меня есть настройка проекта для обработки их в виде строк в полезных нагрузках JSON.
public void ConfigureServices(IServiceCollection services) { services.AddControllers().AddNewtonsoftJson(options =gt; { options.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); options.SerializerSettings.Converters.Add(new StringEnumConverter(new DefaultNamingStrategy { OverrideSpecifiedNames = false })); }); services.AddSwaggerGen(c =gt; { // Set the swagger doc stub c.SwaggerDoc("v1", new OpenApiInfo { Version = "v1", Title = "API" }); // Set the comments path for the Swagger JSON and UI. string xmlFile = $"{Assembly.GetExecutingAssembly().GetName().Name}.xml"; string xmlPath = Path.Combine(AppContext.BaseDirectory, xmlFile); c.IncludeXmlComments(xmlPath); // Add documentation for our SignalR hubs to the documentation c.DocumentFilterlt;SignalRSwaggerGen.SignalRSwaggerGengt;(new Listlt;Assemblygt; { typeof(NotificationUserHub).Assembly }); }); services.AddSwaggerGenNewtonsoftSupport(); }
Это отлично работает для всех моих перечислений. Проблема, однако, возникает, когда я пытаюсь использовать перечисления, импортированные из .СЕТЕВЫЕ библиотеки:
public sealed class ErrorResponse { public HttpStatusCode StatusCode { get; set; } public string Message { get; set; } }
Этот объект использует System.Net.HttpStatusCode
перечисление. Когда я сериализую и десериализую этот объект, перечисление отображается в виде числового значения, как и предполагалось. Однако в моей документации по Swagger показаны строковые значения для этого перечисления:
Есть ли способ сообщить свэггеру, что конкретное перечисление должно обрабатываться как числовые значения?
Комментарии:
1. Я не думаю, что есть, конвертер применяется ко всем перечислениям.
2. @TanveerBadar В таком случае, есть ли атрибут, который я могу добавить в перечисления, которые я хочу сериализовать в виде строк, и удалить
services.AddSwaggerGenNewtonsoftSupport()
вызов?