问题描述
Swashbuckle需要什么样的配置才能在PascalCase中完全显示后端中的枚举值?
我不是在寻求全球性的变化,其他一切都可以正常运行,而且看起来很好,只是枚举。 链接到官方文档将非常棒!
- .NET Core 2.1
- Swashbuckle.AspNetCore 5.6.3
- Swashbuckle.AspNetCore.Filters 5.1.2
- Swashbuckle.AspNetCore.Newtonsoft 5.6.3
解决方法
这是一个演示作品:
我用过:
- .NET Core 2.1
- Swashbuckle.AspNetCore 5.6.3
- Swashbuckle.AspNetCore.Filters 6.0.0
- Swashbuckle.AspNetCore.Newtonsoft 5.6.3
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
}
结果:
,考虑到DescribeAllEnumsAsStrings is now deprecated,帮助我的是基于智能建议的以下代码:
services.AddMvc()
.AddJsonOptions(options =>
{
options.SerializerSettings.Converters = new List<JsonConverter>
{
new StringEnumConverter{ NamingStrategy = new DefaultNamingStrategy() }
};
});