如何在 OpenApi 3.0.1 中使用枚举属性
How to use enum properties in OpenApi 3.0.1
我有一个这样的枚举:
@Getter
public enum ErrorCode implements BaseError {
// @formatter:off
FOO(100001, "Foo message.",
BAR(100002, "Bar message."),
.
.
.
FOOBAR(300003, "FOOBAR message.");
public final int errorId;
public final String errorMsg;
ErrorCode(int errorId, String errorMsg) {
this.errorId = errorId;
this.errorMsg = errorMsg;
}
}
我知道,我可以使用 @Schema(implementation = ErrorCode.class)
在 SqggerUI 中显示枚举,但它会显示名称。有没有办法显示错误代码(或任何其他已定义的枚举属性)?
在这种情况下,我想显示 errorCodes 的列表,而不是显示枚举 names 列表的默认值。
正如我所怀疑的那样,OpenApi 使用枚举的 toString()
,它默认实现为调用 name()
。如果您覆盖枚举的 toString()
。你会达到你的目标。
我看不出任何你不应该为 Java 枚举重新定义 toString()
的理由,我不知道这应该违反任何合同。
我有一个这样的枚举:
@Getter
public enum ErrorCode implements BaseError {
// @formatter:off
FOO(100001, "Foo message.",
BAR(100002, "Bar message."),
.
.
.
FOOBAR(300003, "FOOBAR message.");
public final int errorId;
public final String errorMsg;
ErrorCode(int errorId, String errorMsg) {
this.errorId = errorId;
this.errorMsg = errorMsg;
}
}
我知道,我可以使用 @Schema(implementation = ErrorCode.class)
在 SqggerUI 中显示枚举,但它会显示名称。有没有办法显示错误代码(或任何其他已定义的枚举属性)?
在这种情况下,我想显示 errorCodes 的列表,而不是显示枚举 names 列表的默认值。
正如我所怀疑的那样,OpenApi 使用枚举的 toString()
,它默认实现为调用 name()
。如果您覆盖枚举的 toString()
。你会达到你的目标。
我看不出任何你不应该为 Java 枚举重新定义 toString()
的理由,我不知道这应该违反任何合同。