在我们的swagger.yaml文件中,我们有一个定义Cat
,该定义使用allOf
来包含Pet
的所有属性。
Cat:
allOf:
- $ref: '#/definitions/Pet'
- type: object
properties:
# ...
期望是,在生成Java源代码时,我们得到
public class Cat extends Pet {
在使用Swagger Editor时有效。
在未设置swagger-codegen-maven-plugin
的情况下使用configOptions
时,我们得到以下信息:
public class Cat {
Cat
本身实现了Pet
的所有属性,而不是对其进行扩展。
如何告诉swagger-codegen-maven-plugin
将Java与继承一起使用(即extends
)?(我们尝试使用spring和java作为语言。)
这是一个示例swagger.yaml文件:
swagger: '2.0'
info:
version: 1.0.0
title: simple inheritance
tags:
- name: "pet"
paths:
/cat:
put:
tags:
- "pet"
operationId: "updateCat"
consumes:
- "application/json"
parameters:
- in: "body"
name: "body"
required: true
schema:
$ref: "#/definitions/Cat"
responses:
200:
description: Nada
definitions:
Pet:
type: "object"
required:
- "name"
properties:
name:
type: "string"
example: "doggie"
Cat:
allOf:
- $ref: '#/definitions/Pet'
- type: object
properties:
huntingSkill:
type: string
required:
- huntingSkill
答案 0 :(得分:0)
chiochuan在github上指出,解决方法是添加
discriminator: "type"
到父级的定义以使Java子类扩展它。
definitions:
Pet:
type: "object"
discriminator: "type"
required:
- "name"
properties:
name:
type: "string"
example: "doggie"
有点奇怪,因为OpenAPI规范版本2.0指出discriminator
Fixed Field必须引用同一模式中的属性,并且它必须是required
属性,两者都不是情况-但至少在今天为止仍然有效。 :)