在我使用Swagger 2.0设计的Spring API中,我试图使用swagger创建继承。我想创建一个基础对象,该对象将具有Request和Response对象的通用属性。我尝试像下面的示例那样做:
CategoryResponse:
allOf:
- $ref: '#/definitions/Category'
- type: object
properties:
id:
type: integer
example: '1'
CategoryRequest:
type: object
allOf:
- $ref: '#/definitions/Category'
Category:
discriminator: nameCategory
type: object
properties:
nameCategory:
type: string
example: Games
问题是,当尝试发布或放置新的CategoryRequest对象时,我收到一个Bad Request错误。它甚至没有涉及到API控制器,所以我想问题可能出在上面的模型定义中。我尝试了许多变体,但没有一个起作用。但是,当我尝试通过ID获取类别列表或一个类别时,我可以做到这一点(我的CategoryResponse正在工作,并且可以很好地扩展“类别”)。
有人知道使用对请求和响应对象通用的基本模型的继承来创建此结构的正确方法吗?
谢谢!
答案 0 :(得分:1)
id
看起来像是一个自动生成的只读属性。在这种情况下,您不需要继承-您可以使用单个Category
模式,并将id
标记为readOnly: true
。
Category:
type: object
properties:
nameCategory:
type: string
example: Games
id:
type: integer
readOnly: true # <-----
example: 1
readOnly
将属性声明为“只读”。这意味着它可以作为响应的一部分发送,但绝不能作为请求的一部分发送。