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