Swagger YAML Query(类型对象)参数定义错误

时间:2017-08-11 07:16:22

标签: swagger swagger-ui swagger-2.0 swagger-editor swagger-codegen

我收到以下错误:

  

paths./cards/count.get.parameters[0]上的模式错误并不完全正确   一个来自<#/ definitions / parameter>,<#/ definitions / jsonReference>

这是我的定义:

WebElement number = driver.findElement(By.id("com.ulink.agrostar.debug:id/edt_enter_mobileNumber"));
number.sendKeys("7976358798");

据我所知,您无法根据此问题使用架构定义:Swagger: Reusing an enum definition as query parameter

我需要修改什么才能使YAML编译没有错误?

1 个答案:

答案 0 :(得分:1)

OpenAPI / Swagger 2.0不支持查询参数中的对象,但OpenAPI 3.0支持这些对象。

如果您坚持使用OpenAPI 2.0,则需要将对象拆分为单独的参数,如下所示:

      parameters:
        - in: query
          name: tags_any
          type: array
          items:
            type: integer
            format: int64
            enum: [1,2,3]
        - in: query
          name: tags_all
          type: array
          items:
            type: integer
            format: int64
            enum: [4,5,6]
        - in: query
          name: tags_not
          type: array
          items:
            type: integer
            format: int64
            enum: [4,5,6]

在OpenAPI 3.0中,您可以将参数定义为对象,并使用style and explode关键字指定此对象应如何序列化。

      parameters:
        - name: tagFilter
          in: query
          description: Input is optional - left blank will return all tags and a count

          # Send the object as ?prop1=value1&prop2=value2
          # This is the default serialization method for objects in query parameters
          style: form
          explode: true

          schema:
            type: object
            properties:
              tags_any:
                type: array
                items:
                  type: integer
                  format: int64
                  enum: [1,2,3]
              tags_all:
                type: array
                items:
                  type: integer
                  format: int64
                  enum: [4,5,6]
              tags_not:
                type: array
                items:
                  type: integer
                  format: int64
                  enum: [4,5,6]