如何在Swagger UI中为枚举值启用PascalCase

问题描述

Swashbuckle需要什么样的配置才能在PascalCase中完全显示后端中的枚举值

我不是在寻求全球性的变化,其他一切都可以正常运行,而且看起来很好,只是枚举。 链接到官方文档将非常棒!

  • .NET Core 2.1
  • Swashbuckle.AspNetCore 5.6.3
  • Swashbuckle.AspNetCore.Filters 5.1.2
  • Swashbuckle.AspNetCore.Newtonsoft 5.6.3

camelCase enum values in Swagger UI

PascalCase enum values in C#

解决方法

这是一个演示作品:

我用过:

  • .NET Core 2.1
  • Swashbuckle.AspNetCore 5.6.3
  • Swashbuckle.AspNetCore.Filters 6.0.0
  • Swashbuckle.AspNetCore.Newtonsoft 5.6.3

enter image description here

Startup.cs:

ConfigureServices:

 services.AddSwaggerGen(c =>
            c.DescribeAllEnumsAsStrings()
                );
            services.AddSwaggerGenNewtonsoftSupport();

配置:

            app.UseSwagger();
            app.UseSwaggerUI(c =>
            {
                c.SwaggerEndpoint("/swagger/v1/swagger.json","My API V1");
            });

控制器:

[HttpGet("TestPriority")]
        public IActionResult TestPriority(List<Priority> p)
        {
            return Ok();
        }

优先级:

public enum Priority
    {
        Primary_Image=3,Search_Image=9
    }

结果:

enter image description here

,

考虑到DescribeAllEnumsAsStrings is now deprecated,帮助我的是基于智能建议的以下代码:

services.AddMvc()
.AddJsonOptions(options =>
{
    options.SerializerSettings.Converters = new List<JsonConverter>
    {
        new StringEnumConverter{ NamingStrategy = new DefaultNamingStrategy() }
    };
});