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

Swagger中的关联数组(OpenApi 3.0.0)

曹凯泽
2023-03-14

我有一个API,它总是使用关联数组回答,其中只有一个条目包含包含最终结果的键“数据”。结果可以是一个对象或对象数组。这是API输出:

{
  "data": {
    "id": 1,
    "name": "product1 name",
    "type": "type a",
    "created_at": "2011-09-28T13:20:15+02:00"
  }
}
{
  "data": [
    {
      "id": 1,
      "name": "product1 name",
      "type": "type a",
      "created_at": "2010-09-28T13:20:15+02:00"
    },
    {
      "id": 6,
      "name": "product6 name",
      "type": "type f",
      "created_at": "2010-09-28T13:20:28+02:00"
    },
    {
      "id": 17,
      "name": "product17 name",
      "type": "type Q",
      "created_at": "2010-09-28T13:20:42+02:00"
    }
  ]
}

我怎样才能让swagger在文档中显示数据,即键的名称?

至于现在,我只得到大摇大摆的嵌套数组:

[
  {
    "id": 1,
    "name": "product1 name",
    "type": "type a",
    "created_at": "2010-09-28T13:20:15+02:00"
  }
]
[
  [
    {
      "id": 1,
      "name": "product1 name",
      "type": "type_a",
      "created_at": "2010-01-01T18:21:20+02:00"
    }
  ]
]

我需要数据键在从API返回时以swagger的形式显示。这可行吗?我还没有找到任何解决办法…:/

我的yaml文件的部分内容:

openapi: "3.0.0"
info:
  version: 1.0.0
paths:
  /products/:
    get:
      summary: List all available products
      operationId: listProducts
      tags:
        - products
      responses:
        200:
          description: Array of products
          content:
            application/json:    
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Products"
  /products/{product_id}:
    get:
      summary: Get specific product
      operationId: showProductById
      tags:
        - products
      parameters:
        - name: product_id
          in: path
          required: true
          description: The id of the product to retrieve
          schema:
            type: integer
            format: int32
            example: 1
      responses:
        200:
          description: Product object
          content:
            application/json:
              schema:
                type: array
                properties:
                  datar: string
                items:
                  $ref: "#/components/schemas/Product"
components:
  schemas:
    Product:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 10
        name:
          type: string
          example: "producta name"
        type:
          type: string
          example: "type a"
        created_at:
          type: string
          format: date
          example: "2010-01-01T18:21:20+02:00"
    Products:
      type: array
      items:
        $ref: "#/components/schemas/Product"

任何帮助都将不胜感激:)

干杯

共有1个答案

沈子实
2023-03-14

尝试在assoc数组的中间层中使用“additionalProperties”,源:https://swagger.io/docs/specification/data-models/dictionaries/

components:
  schemas:
    Product:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 10
        name:
          type: string
          example: "producta name"
        type:
          type: string
          example: "type a"
        created_at:
          type: string
          format: date
          example: "2010-01-01T18:21:20+02:00"

    ArrayOfProduct:
      type: object
      additionalProperties:
        $ref: "#/components/schemas/Product"

    Products:
      type: object
      properties:
        data:
          type: object
          $ref: "#/components/schemas/ArrayOfProduct"
 类似资料:
  • SystemTap支持关联数组。关联数组就像其它编程语言中的map/dict/hash,你可以把它看作由互不相同的键所组成的数组,每个键都有一个关联的值。 关联数组需要定义为全局变量。访问关联数组的值的语法跟awk类似,就是array_name[index_expression]。 这里的array_name指关联数组的名字,index_expression指数组中某个唯一的键。比如在下面的例子中

  • 我试图弄清楚如何让Swagger解析一个带有未定义数量的值的关联数组。 我有类似的案例,不同的是这些其他案例是完全规则的(我事先知道所有属性的名称)。然而,在这种情况下,我可能不知道(实际上我不想知道)哪些可能是值的名称。 JSON的一个例子,它有一个带有未定义数量的语言代码的关联数组。每个语言代码键都有一组未定义的翻译,每个翻译都有一个键和值。在这种情况下,“描述”和“步行访问”是翻译的关键。但

  • 我想在我的项目中包含swagger,但我不能更改代码或变量名称。 我有一个返回列表的服务: 代码变量来自枚举操作可能的错误: 是否可以将“代码”和TYPE枚举相关联,以便我可以在生成的swagger文档中显示选项列表? 谢谢

  • 问题内容: 有以下查询结果:(key1和key2可以是任何文本) 我希望将数据存储在网格(可能是数组)中,像这样 循环 所有记录: 在PHP中,使用关联数组非常容易: 但是在JavaScript这样的关联数组中不起作用。阅读大量教程之后,我所能得到的就是: 但不起作用。我尝试了对象数组,但是对象属性不能是自由文本。我阅读教程的时间越长,我就越困惑。 任何想法都欢迎:) 问题答案: 只需使用常规的J

  • 问题内容: 在我的脚本中,有必要创建一个哈希表,我在Google中搜索了此表。为此,大多数人都建议使用JavaScript对象。问题是,哈希表中的某些键具有“”。在他们中。我可以使用关联数组轻松创建这些键。 我不明白为什么关联数组不好。在我查看的站点中提到的第一件事是length属性。我来自使用散列的Perl背景。最常见的用途是从键中获取值,检查键是否存在,删除键值对,添加键值对。如果这些是我的常

  • 问题内容: 我已经看到了许多有关如何获取CSV文件然后创建带有标题作为键的关联数组的示例。 例如: 它会创建一个Array,如 这里将是品牌,型号,部件,测试。 因此,如果我想访问测试值“ 434”,则必须循环数组中的每个索引,然后忽略所有非本田品牌和任何非思域车型 我需要做的是最直接地访问值,而不是通过遍历每个$ num索引的for循环来运行。我希望能够通过以下方式访问值测试“ 434”: 或通