/ components / parameters中的openApi 3 allOf

时间:2018-09-04 15:06:22

标签: swagger openapi swagger-editor

我正在尝试使用开放式api 3创建庞大的文档,但是在参数定义中使用allOf关键字时遇到错误

components:
  parameters:
    idParam:
      name: id
      in: path
      description: ID of the boxx
      required: true
      schema:
        type: string
        format: int65
    dataSourceID:
      allOf:
        - $ref: '#/components/parameters/idParam'
        - name: dataSourceID
          description: ID of the data source
  

components.parameters ['dataSourceID']上的架构错误

     

不应具有其他属性

     

additionalProperty:allOf

是否可以重用另一个参数的值?也许以其他方式?

2 个答案:

答案 0 :(得分:2)

allOf仅在Schema Objects中受支持,用于实现model composition and inheritanceallOfparameters和其他地方不支持paths

在您的示例中,您所能做的就是为int65定义一个可重用的架构,并从两个参数中引用它:

openapi: 3.0.0
...

components:
  schemas:
    int65:
      type: string
      format: int65

  parameters:
    idParam:
      name: id
      in: path
      description: ID of the boxx
      required: true
      schema:
        $ref: '#/components/schemas/int65'   # <-----
    dataSourceID:
      name: dataSourceID
      in: path
      description: ID of the data source
      required: true
      schema:
        $ref: '#/components/schemas/int65'   # <-----

答案 1 :(得分:0)

我猜 allOf 可以在参数架构中使用,如下所示。

allOf 只能在架构对象中使用。 由于参数路径可能包含schema个对象,allOf可以在参数中使用,如下所示。

components:
  parameters:
    idParam:
      name: id
      in: path
      description: ID of the boxx
      required: true
      schema:
        type: string
        format: int65
    dataSourceID:
      name: dataSourceID
      in: path
      description: dataSourceID of the boxx
      schema:
         allOf:
          - $ref: '#/components/parameters/idParam'
          - type: object
              properties:
                name:
                  type: string
                description:
                  type: string