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

Swagger UI:post请求正文中的对象数组忽略explode=true

顾正初
2023-03-14

我试图使用Swagger来记录一个API POST调用,它有一个对象数组参数。但是当我试图在Swagger UI中测试它时,似乎explode:trueencoding:filters中被忽略了。这是我的代码:

openapi: 3.0.2
info:
  description: >-
    My API
  version: 1.0.0
  title: My API
tags:
  - name: myApi
    description: my API
paths:
  /myApi/getList:
    post:
      tags:
        - myApi
      summary: gets a list
      description: gets a list
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                sourceId:
                  type: integer
                  description: the source id
               filters:
                  type: array
                  items:
                    $ref: '#/components/schemas/Filter'
            encoding:
              filters:
                contentType: application/json
                explode: true
      responses:
        '200':
          description: successful operation
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
        '500':
          description: error
components:
  schemas:
    Filter: 
      type: object
      properties:
        field:
          type: string
          description: the name of the field for this filter
        selection:
          type: array
          items:
            type: string
            description: the name of a selected value of the filter field
      required: [attribUniqueName, selection]
sourceId: 1

filters: [
  {
    "field": "product",
    "selection": ["Prod A", "Prod B"]
  },
  {
    "field": "country",
    "selection": ["USA", "France"]
  }
]
sourceId=1&filters={"field":"product","selection":["Prod A","Prod B"]},{"field":"country","selection":["USA","France"]}
sourceId=1&filters={"field":"product","selection":["Prod A","Prod B"]}&filters={"field":"country","selection":["USA","France"]}

反而?

OpenAPI 3.0.2“Encoding Object”文档指出,如果请求体媒体类型不是application/x-www-form-urlencoded,则“忽略explode属性”。但是我们在这里使用的是application/x-www-form-urlencoded。或者文档是不是错误的,它应该声明“内容类型当前对象”而不是“请求体媒体类型”?但是,我会假设得到一个真实的数组作为参数值,I。E.

sourceId=1&filters=[{"field":"product","selection":["Prod A","Prod B"]},{"field":"country","selection":["USA","France"]}]

如果有关系的话:我使用的是Swagger UI3.24.3版本。

共有1个答案

符正信
2023-03-14

您的代码看起来不错,实际问题是Swagger UI还不支持编码

有关GitHub的相关问题请参见此处。它有一个字符串数组的例子,而不是像您的例子中的对象数组,但可能只要它对字符串不起作用,它对对象也不起作用。

 类似资料:
  • 我试图爬过craiglist的论坛类别。组织机构(https://forums.craigslist.org/).我的蜘蛛: 我通过错误回调收到以下消息: [失败实例:Traceback:: /usr/local/lib/python2.7/site-packages/twisted/internet/defer.py: 455:回调 /usr/local/lib/python2.7/site-p

  • 我正在用POST动词调用REST服务。动态构造请求后正文。在某些情况下,很少有字段会填充空值。即使我将我的请求pojo与JsonInclude(Include.NON\u NULL)或JsonInclude(JsonInclude.Include.NON\u NULL)一起使用,也不会删除空值字段。 我的示例请求如下所示。 我自己构造requestEntity,在发布之前不解析它。 如何在具有nu

  • 问题内容: 我刚刚从jQuery 1.3.2更新到1.4.3,并且在发出AJAX DELETE请求时看到了一些新行为。由于某种原因,在我的参数中传递的数据没有发送到服务器。例如: 最终向发送了DELETE请求,没有其他数据。但是,这种类型的调用可以很好地传递参数: 有没有其他人看到过类似的行为?有没有理由不再起作用(即:是设计使然,还是错误)?关于如何使其运作的任何建议? 此外,如果有人想知道为什

  • 我有一个REST API使用POST调用来创建记录,我希望在POST调用中传递某些对象,如果缺少任何东西,我必须直接拒绝它们的唯一, 但是,当使用丢失的属性进行Post调用时,我可以在MongoDB中创建一个条目,我不想保留它,因为这不是一个正确的请求,@validation对我来说不起作用,我正在使用spring boot 2.0.6和MongoDB 4.0.4,任何帮助都非常感谢。提前感谢

  • 很好的一天! 我的应用程序使用简单的http客户端-服务器通信,通过客户端的凌空库建立。首先,我启动一个授权请求: 之后,我请求列出与当前用户相关的设备列表。此时,我收到了来自响应标题的cookei。auth请求的完整标头响应输出: 缓存控制——没有存储,没有缓存,必须重新验证,后检查=0,预检查=0 在身份验证请求的onResponce回调中,我将Set Cookie值作为sessionId,并

  • 我在下面试过了 我以为我会得到0,3,6...但是,我得到了0,1,2,3...因为Flowable最初得到的是。