如何重用 swagger 定义并删除其中的一些参数?
How to reuse swagger definitions and remove some of the parameters in it?
这是我的代码:
definitions:
User:
type: object
properties:
id:
type: integer
username:
type: string
first_name:
type: string
last_name:
type: string
password:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
required:
- username
- first_name
- last_name
- password
/api/users:
post:
description: Add a new user
operationId: store
parameters:
- name: user
description: User object
in: body
required: true
type: string
schema:
$ref: '#/definitions/User'
produces:
- application/json
responses:
"200":
description: Success
properties:
success:
type: boolean
data:
$ref: '#/definitions/User'
如您所见,在 /api/users
下的 post 键中,我使用 User
定义作为我的架构。
我想减少我的代码,所以我重新使用 User
定义作为我的架构。这里的问题是我不需要 id
、created_at
和 updated_at
字段。
有没有办法只继承其中提到的字段以外的部分字段?另外,由于我正在尝试学习招摇,因此我希望提出一些建议以使其变得更好。谢谢。
正如 对类似问题的解释:
You would have to define the models separately.
However, you have options for the cases of exclusion and difference.
If you're looking to exclude, which is the easy case, create a model
of with the excluded property, say ModelA
. Then define ModelB
as
ModelA
plus the additional property:
ModelB:
allOf:
- $ref: "#/definitions/ModelA"
- type: object
properties:
id:
type: string
If you're looking to define the difference, follow the same method
above, and exclude the id from ModelA
. Then define ModelB
and ModelC
as extending ModelA
and add the id property to them, each with its own
restrictions. Mind you, JSON Schema can allow you to follow the
original example above for some cases to "override" a definition.
However, since it is not really overriding, and one needs to
understand the concepts of JSON Schema better to not make simple
mistakes, I'd recommend going this path for now.
这是我的代码:
definitions:
User:
type: object
properties:
id:
type: integer
username:
type: string
first_name:
type: string
last_name:
type: string
password:
type: string
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
required:
- username
- first_name
- last_name
- password
/api/users:
post:
description: Add a new user
operationId: store
parameters:
- name: user
description: User object
in: body
required: true
type: string
schema:
$ref: '#/definitions/User'
produces:
- application/json
responses:
"200":
description: Success
properties:
success:
type: boolean
data:
$ref: '#/definitions/User'
如您所见,在 /api/users
下的 post 键中,我使用 User
定义作为我的架构。
我想减少我的代码,所以我重新使用 User
定义作为我的架构。这里的问题是我不需要 id
、created_at
和 updated_at
字段。
有没有办法只继承其中提到的字段以外的部分字段?另外,由于我正在尝试学习招摇,因此我希望提出一些建议以使其变得更好。谢谢。
正如
You would have to define the models separately.
However, you have options for the cases of exclusion and difference.
If you're looking to exclude, which is the easy case, create a model of with the excluded property, say
ModelA
. Then defineModelB
asModelA
plus the additional property:ModelB: allOf: - $ref: "#/definitions/ModelA" - type: object properties: id: type: string
If you're looking to define the difference, follow the same method above, and exclude the id from
ModelA
. Then defineModelB
andModelC
as extendingModelA
and add the id property to them, each with its own restrictions. Mind you, JSON Schema can allow you to follow the original example above for some cases to "override" a definition. However, since it is not really overriding, and one needs to understand the concepts of JSON Schema better to not make simple mistakes, I'd recommend going this path for now.