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

用于URL查询参数中对象数组的Swagger/OpenAPI规范

卢书
2023-03-14

假设我有一个URL,其路径为:?filter[id]=1&filter[name]=bob&order[][name]=asc&order[][age]=desc

如何将其转换为大摇大摆的文档,具体地说,将对象数组和数组作为查询参数

共有1个答案

锺离辰沛
2023-03-14

您的示例不是对象数组,而是两个独立的对象参数--filterorder[],每个参数都使用deepobject样式序列化(OpenAPI 3.0支持)。您可以如下描述这些参数:

openapi: 3.0.2
...

paths:
  /something:
    get:
      # ?filter[id]=1&filter[name]=bob&order[][name]=asc&order[][age]=desc
      parameters:
        - in: query
          name: filter
          schema:
            type: object
            properties:
              id:
                type: integer
                example: 1
              name:
                type: string
                example: bob
          style: deepObject

        - in: query
          name: order[]
          schema:
            type: object
            properties:
              name:
                type: string
                example: asc
              age:
                type: string
                example: desc
          style: deepObject
 类似资料:
  • 我正在编写一个OpenAPI规范,并试图从请求路由/路径的注释中自动(使用swagger-php)生成我可能的查询参数。我知道我可以为每个路由键入所有可能的参数选项,但我确实需要能够使用注释从类的属性自动生成可能的参数,就像我可以为请求体所做的那样。(我们将有大量的类/路径,除非它们像请求体/JSONContent那样生成,否则很可能无法保持更新。这在一般的swagger-php甚至OpenAPI

  • 我的REST服务中有一个搜索endpoint。我使用的是Spring Boot,所以我有一个@RestController设置,它带有一个基于搜索查询返回搜索结果的方法。这是方法定义: 我希望SwaggerUI将SearchQuery的字段作为单独的查询参数显示在UI中。它不是;它只是显示了一个通用的“查询”参数。如果我用@RequestBody注释query,那么用户可以向主体添加一个json负

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

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

  • 在我的Zend应用程序中,我正在为移动应用程序编写一个小API。为了方便移动开发者,我使用了Swagger。到目前为止,除了一个GET请求外,一切正常。 当我呼叫/user/messages/{sessionToken}时?numMessages={numMessages} 有人知道我的错误吗? 欢迎任何帮助。 诚挚的问候 罗特曼 更新:按照建议,我将两个参数类型都更改为“查询”并更改了路径: 但