本文介紹了Swagger/OpenAPI批注V3-在swagger批注中使用枚舉值的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!
問題描述
我正在使用Swagger/OpenApi V3批注創建應用程序的API描述,這些批注是從以下依賴項導入的:
<dependency>
<groupId>org.springdoc</groupId>
<artifactId>springdoc-openapi-ui</artifactId>
<version>1.1.45</version>
</dependency>
其中一個批注是@Schema
批注,它接受名為allowableValues
的屬性,該屬性允許字符串數組:
@Schema(description = "example",
allowableValues = {"exampleV1", "exampleV2"},
example = "exampleV1", required = true)
private String example;
現在,我想使用在Enum類上構造的自定義方法,該方法返回允許的字符串數組,因此不需要在每次向Enum添加類型時添加它。這樣我們就可以這樣使用它:
public enum ExampleEnum {
EXAMPLEV1, EXAMPLEV2;
public static String[] getValues() {...}
}
@Schema(description = "example",
allowableValues = ExampleEnum.getValues(),
example = "exampleV1", required = true)
private String example;
現在無法編譯,因為在執行注釋時該方法是未知的。
是否有這樣的解決方案允許在swagger V3批注屬性值中使用枚舉?
查看以下資源:
https://swagger.io/docs/specification/data-models/enums/
您可以在全局組件部分定義可重復使用的枚舉,并在其他地方通過$ref引用它們。
最壞的情況是,我確實可以在一個常量位置定義它,并且在將類型添加到Enum之后,只需要將該類型添加到另一個位置。但如果可能的話,我首先想探討一下上面提到的解決方案。
https://github.com/swagger-api/swagger-core/wiki/Swagger-2.X—Annotations#schema
未說明有關使用任何類或動態生成值的任何內容。
Enum in swagger
是關于在swagger中記錄枚舉,而不是在swagger批注API中使用它們。
推薦答案
嘗試使用@Schema(implementation = ExampleEnum.class, ...)
,您可以添加所需的所有其他屬性。我需要有關您的實施的更多信息,但請先嘗試此操作。
這篇關于Swagger/OpenAPI批注V3-在swagger批注中使用枚舉值的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,