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

如何在OpenAPI(Swagger)中定义带有方括号的参数?

苗学民
2023-03-14
GET /info?sort[name]=1&sort[age]=-1

如何为这些参数编写OpenAPI(Swagger)定义

共有1个答案

费明诚
2023-03-14

这取决于您使用的OpenAPI(Swagger)的哪个版本。

sort参数可以定义为具有nameage属性的一个对象。参数序列化方法应该是style:deepobjectexplode:true

openapi: 3.0.0
...

paths:
  /info:
    get:
      parameters:
        - in: query
          name: sort
          schema:
            type: object
            properties:
              name:
                type: integer
                example: 1
              age:
                type: integer
                example: -1
          style: deepObject
          explode: true
      responses:
        '200':
          description: OK

这在Swagger UI3.15.0+和Swagger-Editor 3.5.6+中得到了支持。

swagger: '2.0'
...
paths:
  /info:
    get:
      parameters:
        - in: query
          name: sort[name]
          type: integer
        - in: query
          name: sort[age]
          type: integer
      responses:
        200:
          description: OK
 类似资料:
  • 我正在开发一个API,它允许使用URL进行搜索,比如: 这个答案几乎是我想要做的,我只是找不到一种方法来定义括号内的值为“任何字符串”,而不是已知名称的列表。

  • 问题内容: 在寻找的源代码中,我看到了以下功能: 该语法在哪里记录?我的意思是功能的前面。这与声明一个常规数组相同,在该常规数组中括号可以位于数组名称之后或之前,但是在这种情况下,括号可以位于函数名称之后? VS 编辑:2018-05-22 我在这里发现了这种疯狂语法的更多用法:关于Java的十件事 #3是他们提到可以利用上述语法的所有方式的地方 问题答案: 在JLS第8.4节中: … 返回数组的

  • 我准备我的API文档的方式是每只手做一次,而不是自动生成。我有应该发送到所有API的头,不知道是否可以为整个API全局定义参数? 这些头中有些是静态的,有些必须在调用API时设置,但它们在所有API中都是相同的,我不想为每个API和每个方法复制和粘贴参数,因为这在将来是不可维护的。 我看到了API定义的静态头,但没有一个文档说明如何设置或使用它们。 这到底有没有可能?

  • 我知道https://swagger.io/docs/specification/authentication/bearer-authentication/,但它似乎并没有完全帮助我。 This(OpenAPI 3) 名为default的身份验证标头中的结果() 但这在Swagger编辑器中验证失败,因为我认为的不允许组件(就像类型一样)。老实说,我不能完全理解这里的医生。 我确实读过关于规范扩展

  • 我有一个服务,它可以基于头有两种不同的主体参数。 例如。对于路径: > 如果使用 ,则 POST 可以将 作为正文参数。 如果使用了,那么POST应该使用一些不同的主体参数来调用函数并返回不同的响应。 关于如何在OpenAPI(Swagger)中体现这一点,有什么建议吗?