当前位置: 首页 > 知识库问答 >
问题:

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

钱建本
2023-03-14

我收到以下错误:

路径上的架构错误。/卡/count.get.parameters[0]不完全是一个

以下是我的定义:

  /cards/count:
    get:
      tags:
      - "cards"
      summary: "Number of Cards available"
      description: "Excludes cards which the user has answered correctly in the past."
      operationId: "countCards"
      produces:
      - "application/json"
      parameters:
      - name: "tagFilter"
        in: "query"
        description: "Input is optional - left blank will return all tags and a count"
        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]

我知道您不能根据此问题使用架构定义: Swagger:重用枚举定义作为查询参数

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

共有1个答案

孔和风
2023-03-14

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中,您可以将参数定义为object,并使用< code>style和< code>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]
 类似资料:
  • 问题内容: 如何接受自定义类型查询参数? 上面的行在启动服务器时给出错误 问题答案: 查看有关注入的可接受类型的文档。(这同样适用于所有其他注释) 是原始类型 有一个接受单个String参数的构造函数 有一个名为或的静态方法,该方法接受单个String参数(例如,参见) 已注册ParamConverterProvider JAX-RS扩展SPI的实现,该扩展返回一个ParamConverter实例

  • 我正在尝试正确定义 OpenAPI 规范,以便从该规范生成 api 客户端。我已经解决了一个问题,即我们有一个复杂的查询对象,其中包含嵌套对象和对象数组,用于获取 GET 路由。 让我们以这些类为例。 和一个带有@Query decorator的get请求。 我得到的是。 我还尝试通过添加@ApiQuery装饰器来定义查询参数,它几乎可以工作。 - 但是现在我正在将重复的查询定义混入一个。有没有办

  • 我有一个GET路由,我想在其中将url中的对象参数编码为查询字符串。 在编写 swagger 文档时,我基本上收到不允许我在类型参数中使用/类型的错误: 具有对象值的请求查询参数将在实际请求中编码。 即使 swagger在屏幕顶部显示错误,对象也会在 swagger UI 编辑器中正确呈现,但是该错误浮动在文档顶部。

  • 我试图更新一个实体与OneToOne关系使用restful Web服务。 我使用自定义查询,但它不工作 错误: java.lang.的参数值[2]不匹配预期的类型[com.mezoo.tdc.model.ActivityType(n/a)] 活动豆 豆子 它是可能的更新没有自定义查询?我想使用下面的POST请求: {"uuid":"9d9fa946-ee6e-408e-9e8a-7a9786a1d

  • 我正在应用程序中使用Hazelcast作为共享映射。我的地图是这样的: 第144行: 这里是我的类: 很酷,在重新编译Hazelcast之后,使用这个新的jar,我可以使用普通SQL访问查询。但对于pagingQueries,我有一些错误。

  • 我需要创建一个jpa自定义查询,使用几个表上的联接来获取记录。 以下是我想要达到的目标: 对很少的参数进行数据排序(在运行时决定) 使用where子句进行筛选(在运行时决定) 示例: @query(value=“从用户a中选择a.name,b.city,c.reason在a.id=b.id上连接地址b在a.id=c.id上连接测试c 我无法为其创建常规查询。 任何其他的方法对我来说也是可以接受的来