springdocopenapi:当enum来自生成的代码时,将enum发布为引用

pbwdgjma  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(746)

我在用

<dependency>
            <groupId>org.openapitools</groupId>
            <artifactId>openapi-generator-maven-plugin</artifactId>
            <version>4.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.springdoc</groupId>
            <artifactId>springdoc-openapi-ui</artifactId>
            <version>1.4.8</version>
        </dependency>

通过openapi规范生成客户端存根,并生成我自己的openapi文档。
我确实有一个api,让我们称它为api-1,我在我的项目中使用它。
这个api提供了一个枚举,简化了这个枚举:

@Schema(enumAsRef=true)
public enum SomethingEnum {
 A,
 B,
 C
}

api one提供了openapi规范,其中枚举作为模式包含并引用。那很好。
我在api-2中使用的枚举。我让api-1中的所有模型都使用openapi生成器maven插件生成。
api-2确实提供了一个openapi规范,其简化如下:

{
  "paths": {
    "/request": {
      "get": {
        "tags": [
          "requests"
        ],
        "operationId": "getSomething",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Something"
                }
              }
            }
          }
        }
      }
    }
  },
  "schemas": {
    "Something": {
      "type": "object",
      "properties": {
        "somethingEnum": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "A",
              "B",
              "C"
            ]
          }
        },
        ,
        "id": {
          "type": "string"
        }
      }
    }
  }
}

问题是:somethingeneum不是通过模式引用的。它应该是这样的:

{
  "paths": {
    "/request": {
      "get": {
        "tags": [
          "requests"
        ],
        "operationId": "getSomething",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Something"
                }
              }
            }
          }
        }
      }
    }
  },
  "schemas": {
    "Something": {
      "type": "object",
      "properties": {
        "SomethingEnum ": {
          "$ref": "#/components/schemas/SomethingEnum "
        },
        "id": {
          "type": "string"
        }
      }
    },
    "SomethingEnum": {
      "type": "string",
      "enum": [
        "A",
        "B",
        "C",
      ]
    }
  }
}

我怎样才能做到这一点?有什么办法我可以
将openapi生成器maven插件配置为使用 @Schema(enumAsRef=true) 如何配置springdoc?
我希望我的问题很清楚。谢谢你的建议。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题