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

G. *_*arc 9 rest data-modeling swagger openapi

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

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

Ste*_* H. 7

您可以使用allOf关键字扩展另一种类型,如此处所述

在下面的示例中,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

Run Code Online (Sandbox Code Playgroud)