首页 > 解决方案 > 如何让 Swagger 将模型模式枚举生成为字符串而不是 int?

问题描述

我有一个基于 .NET Core 3 的 Web API 项目,我的 Startup 看起来像这样。

services.AddControllers(o => o.EnableEndpointRouting = false)
                .AddMvcOptions(o =>
                {
                    //Add mvc options here
                })
                .AddNewtonsoftJson(o =>
                {
                    o.SerializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver();
                    o.SerializerSettings.Converters.Add(new StringEnumConverter());
                    o.SerializerSettings.DateFormatString = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fff'Z'";
                })
                .SetCompatibilityVersion(CompatibilityVersion.Latest);

Swagger 生成模式为:

status  MyEnumStatusinteger($int32)
Enum:
[ 1, 2, 3]

我的 C# 枚举如下所示:

public enum TimesheetWorkflowStatus
    {
      NotStarted = 1,
      InProgress = 2,
        Completed = 3
  }

为什么 Swagger 将此枚举记录为 int 而不是字符串?我试过使用DescribeAllEnumsAsStrings,但它已经过时了。我在这里错过了什么吗?

标签: c#asp.net-web-apiswagger.net-core-3.0

解决方案


我从这里找到了解决方案。我必须添加services.AddSwaggerGenNewtonsoftSupport()services.AddSwaggerGen()使其工作。


推荐阅读