有没有可能在不使用鉴别器的情况下由openAPI生成这个?原因是我在让Jackson序列化一个没有discriminaotry值的json时遇到了很多麻烦。因此,我需要一个解决方案,通过一个简单的类BaseClass,我可以手动指定类型(我事先知道)
public abstract BaseClass{}
public Employee extends BaseClass {...}
下面的代码可以工作,但它使用了discriminator,Jackson一直在抛出未找到的属性:
components:
schemas:
BaseClass:
type: object
required:
- entityType
properties:
entityType:
type: string
enum:
- Employee
discriminator:
propertyName: entityType
Employee:
allOf:
- $ref: "#/components/schemas/BaseClass"
properties:
anotherThing:
type: string
或者openAPI有没有一种方法来扩展一个在类路径中定义的类?比如我可以在src/java中手动定义BaseClass,然后让OpenAPI生成Employee extends BaseClass
1条答案
按热度按时间hlswsv351#
OpenAPI规范本身并不处理或了解类型、超类型、子类型、接口或继承。一切都是用于描述请求和响应有效负载的JSON Schema约束语言与类型化或非类型化代码生成目标语言之间的Map。您可以使用
allOf
进行原始合成(oneOf
,anyOf
和not
很难进行代码生成)。如果使用OpenAPI v3.1,您可能会从使用简单if
/then
/else
结构的模式中获得OK结果-您可以通过使用const
条件的if
模式来复制discriminator
的行为。这完全取决于您正在使用的代码生成工具及其AST计算器或模板的复杂程度。