如何从引用的架构中排除属性?

时间:2020-03-01 06:38:49

标签: openapi

我有一个端点来创建地址,并有一个端点来更新地址。在OpenAPI规范中对此进行描述,我想使用一个组件作为地址,这样我就不必两次指定地址。现在的问题是,用于更新的地址对象应包含属性“ id”,而用于创建的对象则不包含。

因此,基本上,我正在寻找一种方法来描述组件部分中的完整地址(包括id属性),然后引用创建端点,但在此不包括“ id”属性。

1 个答案:

答案 0 :(得分:1)

您可以使用allOf关键字as documented here

扩展另一种类型。

在下面的示例中,creationType仅具有name属性,但是updateType具有creationType的所有属性以及id的属性。

示例:

components:
  schemas:
    creationType:
      type: object
      properties:
        name:
          type: string
    updateType:
      allOf:
      - $ref: '#/components/schemas/creationType'
      - type: object
        required:
        - id
        properties:
          id:
            type: string