这些是我想要生成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规范。
2条答案
按热度按时间qyzbxkaa1#
不确定,但我认为你需要在子类的属性上使用@Schema,并指出它从父类继承了所需的属性!
这里有一个例子,可以帮助你:
字符串
通过这种方式,您可以确认
CreditCardDto
的cardNumber
属性是必需的,除了从ArrangementDto
类继承id
required字段之外,您生成的OpenAPI规范现在应该具有它们!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/