swagger 从父类继承所需字段@Schema注解

jogvjijk  于 2023-11-18  发布在  其他
关注(0)|答案(2)|浏览(277)

这些是我想要生成openapi规范的类:

import org.eclipse.microprofile.openapi.annotations.media.Schema;

@Schema(requiredProperties = {"id"})
public class ArrangementDto {
  private String id;
}

public class CreditCardDto extends ArrangementDto {
  private String number;
}

字符串
这就是我生成的规范的样子:

ArrangementDto:
      required:
      - id
      type: object
      properties:
        id:
          type: string

CreditCardDto:
      type: object
      properties:
        id:
          type: string
        number:
          type: string


正如你所看到的,CreditCardDto上的id是必需的信息丢失了。我们应该如何解决这个问题?有没有一种方法可以将必需的属性继承给子类?
我使用Quarkus 3,它使用符合MicroProfile OpenAPI规范的Smallrye OpenAPI扩展,以生成API OpenAPI v3规范。

qyzbxkaa

qyzbxkaa1#

不确定,但我认为你需要在子类的属性上使用@Schema,并指出它从父类继承了所需的属性!
这里有一个例子,可以帮助你:

@Schema(requiredProperties = {"id"})
public class ArrangementDto {

  private String id;
}

public class CreditCardDto extends ArrangementDto {

  @Schema(required = true)
  private String cardNmber;
}

字符串
通过这种方式,您可以确认CreditCardDtocardNumber属性是必需的,除了从ArrangementDto类继承id required字段之外,您生成的OpenAPI规范现在应该具有它们!

mccptt67

mccptt672#

在Quarkus中,您可以选择混合方法来生成您的openapi规范。
含义:你可以提供一个静态的openapiyaml文件,你的注解中的动态部分将被添加到其中。
请参阅此链接:https://quarkus.io/guides/openapi-swaggerui#loading-openapi-schema-from-static-files
还要检查OpenApi规范中的继承:
https://swagger.io/docs/specification/data-models/inheritance-and-polymorphism/

相关问题