首页 > 解决方案 > Openapi swagger 文档生成引用

问题描述

我在带注释的对象中有几个枚举,例如:

@Schema(description = "Request description")
case class Request(
   @Schema(description = "Enum1 description")
   field2: Enum1,
  
   @Schema(description = "Enum2 description")
   field2: Enum2
)

其中枚举定义为:

sealed trait Enum1 extends EnumEntry
object Enum1 extends Enum[Enum1] {
   case object Value1 extends Enum1
   case object Value2 extends Enum1
}

sealed trait Enum2 extends EnumEntry
object Enum2 extends Enum[Enum2] {
   case object Value3 extends Enum2
   case object Value4 extends Enum2
}

使用 Openapi3,我可以生成一个招摇的文档。我的问题是说Enum1Enum2翻译不同,如:

"field1":{
    "enum":["Value1","Value2"],
    "type":"string"
},

"field2":{
  "$ref":"#/components/schemas/Enum2"
}

/* ... */

"Enum2":{
  "description":"Enum2 description",
  "type":"object"
}

我希望Enum2记录与 相同的文档Enum1,因此使用实际的枚举值。有什么办法可以强制这样做,或者有什么解释为什么会发生这种情况?两个枚举与示例中的基本相同。

标签: scalaswaggeropenapiswagger-codegenopenapi-generator

解决方案


就我而言,我设法通过将implementation参数添加到@Schema注释来解决它。基于这个这个

@Schema(description = "Request description")
case class Request(
   @Schema(
     implementation = classOf[Enum1],
     description = "Enum1 description"
   )
   field1: Enum1,
)


推荐阅读