在swagger文档中显示的响应中设置枚举字段的示例值

xe55xuns  于 2023-03-29  发布在  其他
关注(0)|答案(1)|浏览(448)

我有这个例子作为未找到记录时的响应类型:

public class NotFoundResponse
{
    /// <example>RecordNotFound</example>
    public ErroCodes ErrorCode { get; set; }

    /// <example>5</example>
    public int NumericErrorCode { get; set; }

    /// <example>A random error message.</example>
    public string ErrorMessage { get; set; }
}

我的ErrorCodes枚举类包含以下字段:

public enum ErrorCodes
{
    None = 0,
    ...
    RecordNotFound = 5
}

但是正如你在示例响应中看到的,它总是接受第一个字段“None”。我怎么能在那里放置任何我想要的错误代码呢?

tktrz96b

tktrz96b1#

在示例响应中,它总是取第一个字段“None”。我如何在那里放置我想要的任何错误代码?
根据您共享的代码片段和描述,您似乎希望在显示swagger API文档时设置枚举值,而不是defult或您想要分配的任何值。
如果你在swagger DependencyInjection extension class中查看SwaggerGenOptionsExtensions.cs,你会看到UseInlineDefinitionsForEnums属性,它允许你定义你想要在swagger API文档中显示的自定义枚举值,而不是默认值。看看下面的图片:

实施:
你可以在你的类注解上定义你期望的枚举值,如下所示:

public class NotFoundResponse
    {
       
        [DefaultValue(ErrorCodes.MyCustomErrorCode)]
        public ErrorCodes ErrorCode { get; set; }
        public int NumericErrorCode { get; set; }
        public string ErrorMessage { get; set; }
    }

    public enum ErrorCodes
    {
       
        None = 0,
        RecordNotFound = 5,
        FileNotFound = 7,
        MyCustomErrorCode = 4004,
    }

Program.cs文件:
在你的program.cs文件中,你必须明确地定义枚举值将根据你的自定义来选择。

builder.Services.AddSwaggerGen(modifyEnumDefultValue =>
{

    modifyEnumDefultValue.UseInlineDefinitionsForEnums();
});

输出:

**注:**您可以在这里获得更多关于swagger官方文档的详细信息。

相关问题